Pluggable cache across the entire EPiServer platform so we can use distributed caches

Member since: 2010
 

We need a pluggable cache for EPiServer. This would allow us to use custom distributed caches like for instance Redis or similar which would make load balanced environments a breeze to use. In the last 8+ years i have not done a single server EPiServer site because of high availablity demands and it is sometimes a pain to setup the event system to make episerver work across multiple servers.

This cache needs to be the same implementation across the entire platform, cms and commerce, instead of each subsystem using a custom cache implementation. As it is right now, especially commerce, uses different caching mechanisms for different subsystems, like business foundation uses one cache (which basically doesn't work in a load balanced environment because it doesn't cache invalidate across multiple servers), meta data plus uses another system and the catalog system uses a third implementation and the list goes one.

Also don't use AppFabric cache or whatever they call it now if you are going to provide example implementations as it is deprecated and Microsoft recommends everyone to use Redis anyway :)

#118904 Mar 17, 2015 10:00
  • Member since: 2011
     

    On version 8.12.0 all of commerce should be using ISynchronizedObjectInstanceCache.  You should then be able to create a redis implementation of ISynchronizedObjectInstanceCache that will just read and write to the distributed cache.  Then just configure in init module to use your redis implementation.

    #119268 Mar 25, 2015 16:46
  • Member since: 2010
     

    That sounds great Mark, really looking forward to that :)

    #119270 Mar 25, 2015 19:38
  • Member since: 2011
     

    This was released in 8.11.1

    #120177 Apr 13, 2015 11:37
  • Member since: 2010
     

    Will download and take a look asap, thanks Mark.

    #120178 Apr 13, 2015 11:42
  • Member since: 2010
     

    Unfortunately the whole distributed cache thing fell flat on its back because a lot of the objects that EPiServer caches have circular references and therefor cannot be serialized/deserialized in a meaningfull way. Also it seems as if some of the cms objects are marked as serializable but some are not, and with commerce the situation is much worse (MetaClass for example from meta data plus).

    This would mean that only some of the objects used by EPiServer can be cached, and the amount of code and cpu cycles needed to figure out if an object could be cached in a distributed cache would be non-trivial. 

    So until an immutable value object cache is in place for cms/commerce i don't think this is doable in a non-hackish way, all objects cached needs to be able to be serialized/deserialized so it can be transfered to/from a distributed cache.

    #121803 May 18, 2015 8:17
  • Member since: 2015
     

    Hey Thomas,

    I realise this is an old thread but did you overcome this problem?

    Thanks

    Adam

    #143136 Jan 13, 2016 13:43