Class CmsFlexCache

java.lang.Object
org.opencms.flex.CmsFlexCache
All Implemented Interfaces:
I_CmsEventListener

public class CmsFlexCache extends Object implements I_CmsEventListener
This class implements the FlexCache.

The data structure used is a two-level hashtable. This is optimized for the structure of the keys that are used to describe the caching behaviour of the entries. The first hash-level is calculated from the resource name, i.e. the name of the resource as it is referred to in the VFS of OpenCms. The second hash-level is calculated from the cache-key of the resource, which also is a String representing the specifc variation of the cached entry.

A suffix [online] or [offline] is appended to te resource name to distinguish between the online and offline projects of OpenCms. Also, for support of JSP based workplace pages, a suffix [workplace] is appended. The same cached workplace pages are used both in the online and all offline projects.

Entries in the first level of the cache are of type CmsFlexCacheVariation, which is a sub-class of CmsFlexCache. This class is a simple data type that contains of a Map of CmsFlexCacheEntries, with variations - Strings as keys.

Here's a short summary of used terms:

  • key: A combination of a resource name and a variation. The data structure used is CmsFlexCacheKey.
  • resource: A String with the resource name and an appended [online] of [offline] suffix.
  • variation: A String describing a variation of a cached entry in the CmsFlexCache language.
  • entry: A CmsFlexCacheEntry data structure which is describes a cached OpenCms resource. For every entry a key is saved which contains the resource name and the variation.
Cache clearing is handled using events. The cache is fully flushed if an event I_CmsEventListener.EVENT_PUBLISH_PROJECT or I_CmsEventListener.EVENT_CLEAR_CACHES is caught.

Since:
6.0.0
See Also:
  • Field Details

  • Constructor Details

    • CmsFlexCache

      public CmsFlexCache(CmsFlexCacheConfiguration configuration)
      Constructor for class CmsFlexCache.

      The parameter "enabled" is used to control if the cache is actually on or off. Even if you don't need the cache, you still have to create an instance of it with enabled=false. This is because you need some of the FlexCache data structures for JSP inclusion buffering.

      Parameters:
      configuration - the flex cache configuration
  • Method Details

    • cacheOffline

      public boolean cacheOffline()
      Indicates if offline project resources are cached.

      Returns:
      true if offline projects are cached, false if not
    • cmsEvent

      public void cmsEvent(CmsEvent event)
      Implements the CmsEvent interface, the FlexCache uses the events to clear itself in case a project is published.

      Specified by:
      cmsEvent in interface I_CmsEventListener
      Parameters:
      event - CmsEvent that has occurred
    • dumpKeys

      public void dumpKeys(StringBuffer buffer)
      Dumps keys and variations to a string buffer, for debug purposes.

      Parameters:
      buffer - the buffer to which the key information should be written
    • getCachedKey

      Returns the CmsFlexCacheKey data structure for a given key (i.e. resource name).

      Useful if you want to show the cache key for a resources, like on the FlexCache administration page.

      Only users with administrator permissions are allowed to perform this operation.

      Parameters:
      key - the resource name for which to look up the variation for
      cms - the CmsObject used for user authorization
      Returns:
      the CmsFlexCacheKey data structure found for the resource
    • getCachedResources

      Returns a set of all cached resource names.

      Useful if you want to show a list of all cached resources, like on the FlexCache administration page.

      Only users with administrator permissions are allowed to perform this operation.

      Parameters:
      cms - the CmsObject used for user authorization
      Returns:
      a Set of cached resource names (which are of type String)
    • getCachedVariations

      Returns all variations in the cache for a given resource name. The variations are of type String.

      Useful if you want to show a list of all cached entry - variations, like on the FlexCache administration page.

      Only users with administrator permissions are allowed to perform this operation.

      Parameters:
      key - the resource name for which to look up the variations for
      cms - the CmsObject used for user authorization
      Returns:
      a Set of cached variations (which are of type String)
    • getEntryLruCache

      Returns the LRU cache where the CacheEntries are cached.

      Returns:
      the LRU cache where the CacheEntries are cached
    • initializeCms

      public void initializeCms(CmsObject adminCms)
      Initializes the flex cache.

      Parameters:
      adminCms - a CMS context with admin privileges
    • isEnabled

      public boolean isEnabled()
      Indicates if the cache is enabled (i.e. actually caching entries) or not.

      Returns:
      true if the cache is enabled, false if not
    • keySize

      public int keySize()
      Returns the total number of cached resource keys.
      Returns:
      the number of resource keys in the cache
    • size

      public int size()
      Returns the total number of entries in the cache.

      Returns:
      the number of entries in the cache