The Caffeine cache provider is a dotCMS implementation of the Caffeine cache by Ben Manes. Caffeine is a local, memory-only cache. For more information on cache providers in dotCMS, please see the Cache Properties documentation.
What is Caffeine?
Caffeine is a local, high-performance, memory-only cache library, with features including but not limited to:
- Automatic loading of entries into the cache, optionally asynchronously.
- Size-based eviction when a maximum is exceeded based on frequency and recency.
- Time-based expiration of entries, measured since last access or last write.
- Asynchronous refresh when the first stale request for an entry occurs.
- Writes propagated to an external resource
For more information about Caffeine, please see the Caffeine page on Github or the Caffeine user's guide.
Caffeine in dotCMS
A Caffeine cache provider is included with dotCMS, and is enabled by default for all cache regions in both Community and Enterprise editions. All customers may change the cache Configuration Properties (see below), and customers with an Enterprise license may change how the Caffeine cache provider is used in each cache region.
Configuration Properties
The following parameters in the configuration properties control the bahavior of the Caffeine cache. Please note that Caffeine does not use a segmented cache, so while some of these properties may be familiar in the context of other cache providers, there is no cache.concurrencylevel
property.
Default Cache Region Size
The following parameter configures the default cache size (number of entries) of the Caffeine cache:
cache.default.size=1000
This parameter specifies the default cache size (number of entries), which will be used for any cache region which does not have a cache size set explicitly (see below).
Cache Region Sizes
In addition to the default cache settings, you can also specify the size (number of entries) of each cache region, giving you the flexibility to tune the cache for the specific design of your site. The following settings are the defaults, but may be modified by editing these properties:
cache.adminconfigpool.size=100
cache.blockdirectivecache.size=1000
cache.categorybykeycache.size=1000
cache.categorycache.size=1000
cache.categorychildrencache.size=1000
cache.categoryparentscache.size=1000
cache.companypool.size=10
cache.contentletcache.size=5000
cache.fileassetmetadatacache.size=200
cache.dotcmslayoutcache.size=1000
cache.dotcmsrolecache.size=1000
cache.dotcmsrolekeycache.size=1000
cache.dotcmsuserrolecache.size=1000
cache.fieldscache.size=1000
cache.filecache.size=1000
cache.foldercache.size=1000
cache.hostaliascache.size=1000
cache.hostcache.size=1000
cache.hostvariablescache.size=1000
cache.htmlpagecache.size=1000
cache.identifiercache.size=50000
cache.languagecacheimpl.size=1000
cache.navcache.size=1000
cache.parentpermissionablecache.size=10000
cache.permissioncache.size=50000
cache.plugincache.size=1000
cache.portletpool.size=100
cache.structurecache.size=500
cache.templatecache.size=500
cache.userdotcmscache.size=1000
cache.useremaildotcmscache.size=1000
cache.userproxycache.size=1000
cache.velocitycache.size=1000
cache.velocitymenucache.size=1000
cache.velocitymisscache.size=1000
cache.versioncache.size=50000
cache.versioninfocache.size=50000
cache.virtuallinkscache.size=1000
cache.workflowcache.size=1000
cache.workflowstepcache.size=1000
cache.workflowtaskcache.size=10000
cache.indiciescache.size=8
cache.publishingendpointcache.size=100
cache.workflowactioncache.size=10000
cache.logmappercache.size=10
cache.translatedquerycache.size=5000
cache.csscache.size=2500
cache.dotcmsrootrolescache.size=1000
cache.identifier404cache.size=1000
cache.fieldsvarcache.size=1000
cache.relationshipcachebyname.size=1000
cache.relationshipcachebyinode.size=1000
cache.propertycache.size=1000
cache.containercache.size=1000
cache.newnotificationcache.size=1000
cache.containerstructurecache.size=1000
cache.blockdirectivehtmlpagecache=1000
cache.pushedassetscache=5000
cache.ratingcache=1000
cache.velocityuservtlcache=500
Cache Chain Properties
The default cache chain includes the Caffeine cache provider by default:
cache.default.chain=com.dotmarketing.business.cache.provider.caffeine.CaffeineCache
Therefore you only need to add the Caffeine cache provider to the cache chain for any new cache chain properties you create for specific cache regions. To add the Caffeine cache provider to the cache chain property for a region, you must add com.dotmarketing.business.cache.provider.caffeine.CaffeineCache
to the cache chain properties for the cache regions where you wish to use it. For example, the following property specifies a cache chain for the adminconfigpool cache region that uses only the Caffeine Cache:
cache.adminconfigpool.chain=com.dotmarketing.business.cache.provider.caffeine.CaffeineCache
For more information on how to configure cache regions to use the Caffeine Cache provider, please see the Cache Chaining documentation.