Cache
This page summarizes the features of Magnolia cache, lists the modules involved, and explains what is available in Community Edition and DX Core. It also proposes alternatives for some of the third-party libraries.
The need to cache content is very different in developing, staging or production environments. If your system relies heavily on cache for performance, the system may be misconfigured or suffer from undersized servers.
Caching features by edition
Cache feature | Community | DX Core |
---|---|---|
✓ |
✓ |
|
✓ |
✓ |
|
✓ |
✓ |
|
✓ |
✓ |
|
✓ |
✓ |
|
✓ |
✓ |
|
✓ |
✓ |
|
✓ |
✓ |
|
✓ |
✓ |
|
✓ |
✓ |
|
✓ |
||
✓ |
||
✓ |
||
✓ |
Caching arbitrary objects
With Magnolia, you can cache basically every object beyond the well-known page caching. See caching arbitrary objects.
Page caching
Magnolia caches content on a page level by default. This means that a page is the smallest unit you can cache with the standard Cache module. The Dynamic Page Caching add-on allows you to cache fragments of a page.
Web resources caching
Static Web resources such as CSS and JavaScript as well as aggregations of such resources are cached.
Asset caching
Magnolia has a separate Digital asset management module. Assets (such as images) and asset renditions served directly from Magnolia are cached by default.
Granular cache policy configuration
The cache policy - what should be cached and what shouldn’t - is highly customizable according to your requirements.
Granular flush policy configuration
You can define flush policies - rules for when the cache should be flushed. By default, caches are flushed automatically when content is successfully published. You can configure the policy to flush caches depending on changes in JCR repositories instead.
GZip compression
The cache module comes with a configurable GZip filter to enable Gzip compression. To serve content compressed in the GZip format is a common and widespread approach to decrease network demands. All text-based files (HTML, CSS, JavaScript) are compressed by default.
Ehcache implementation
Ehcache is Magnolia’s default third-party low-level cache implementation. See below.
Memcached implementation
Alternative third-party low-level cache implementation. See below.
Cache Browser app
The Cache Browser app runs on an author instance and allows you to delete cache items on a granular level. The app deletes cached items on all the public instances, independent of your public instances setup - be it a single instance or a complex cluster.
Personalized variant caching
When using Personalization, pages that have personalized content are not cached by default. You can enable caching with Advanced Cache for Personalization.
Dynamic page caching
Dynamic page caching allows you to cache fragments of a page that also contains parts that cannot be cached. DCP uses the SiteMesh module.
Cache implementations
Magnolia cache uses established third-party libraries for the low-level functions. Depending on your production environment, one cache implementation may fit better than another. Please contact Magnolia Services to get the best cache strategy for your project and server setup.
Default implementation: Ehcache 3
By default Magnolia uses Ehcache. The third-party library is provided by and configured with the Magnolia Ehcache 3 module. Ehcache is a robust, proven and full-featured cache product which has made it the most widely used Java cache. It provides off-heap storage capabilities and is fully compatible with javax.cache API (JSR-107).
Ehcache 3.x always keeps cached content on the disk as long as flushing is not proactively requested. Cached content is also retained if you must restart the system.
Alternative implementation: Memcached
Memcached is a high-performance, distributed memory object caching system. Magnolia’s Memcached implementation brings you the advantages of a distributed cache:
-
Sharing of cache items between multiple instances of Magnolia.
-
Cached items persist restart of Magnolia instance.
-
Memcached servers may run on any server in the network and so do not consume your server memory.