public class CmsFlexCache extends java.lang.Object implements I_CmsEventListener
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:
I_CmsEventListener.EVENT_PUBLISH_PROJECT
or I_CmsEventListener.EVENT_CLEAR_CACHES
is caught.CmsFlexCacheKey
,
CmsFlexCacheEntry
,
CmsLruCache
,
I_CmsLruCacheObject
限定符和类型 | 类和说明 |
---|---|
static class |
CmsFlexCache.CmsFlexCacheVariation
A simple data container class for the FlexCache variations.
|
限定符和类型 | 字段和说明 |
---|---|
static java.lang.String |
CACHE_OFFLINESUFFIX
Suffix to append to online cache entries.
|
static java.lang.String |
CACHE_ONLINESUFFIX
Suffix to append to online cache entries.
|
static int |
CLEAR_ALL
Trigger for clearcache event: Clear complete cache.
|
static int |
CLEAR_ENTRIES
Trigger for clearcache event: Clear only entries.
|
static int |
CLEAR_OFFLINE_ALL
Trigger for clearcache event: Clear complete offine cache.
|
static int |
CLEAR_OFFLINE_ENTRIES
Trigger for clearcache event: Clear only offline entries.
|
static int |
CLEAR_ONLINE_ALL
Trigger for clearcache event: Clear complete online cache.
|
static int |
CLEAR_ONLINE_ENTRIES
Trigger for clearcache event: Clear only online entries.
|
static int |
INITIAL_CAPACITY_CACHE
Initial cache size, this should be a power of 2 because of the Java collections implementation.
|
static int |
INITIAL_CAPACITY_VARIATIONS
Initial size for variation lists, should be a power of 2.
|
protected CmsLruCache |
m_variationCache
The LRU cache to organize the cached entries.
|
static java.lang.String |
REPOSITORY_OFFLINE
Offline repository constant.
|
static java.lang.String |
REPOSITORY_ONLINE
Online repository constant.
|
EVENT_BEFORE_PUBLISH_PROJECT, EVENT_CLEAR_CACHES, EVENT_CLEAR_OFFLINE_CACHES, EVENT_CLEAR_ONLINE_CACHES, EVENT_CLEAR_PRINCIPAL_CACHES, EVENT_FLEX_CACHE_CLEAR, EVENT_FLEX_PURGE_JSP_REPOSITORY, EVENT_FULLSTATIC_EXPORT, EVENT_GROUP_MODIFIED, EVENT_LOGIN_USER, EVENT_OU_MODIFIED, EVENT_PROJECT_MODIFIED, EVENT_PROPERTY_DEFINITION_CREATED, EVENT_PROPERTY_DEFINITION_MODIFIED, EVENT_PROPERTY_MODIFIED, EVENT_PUBLISH_PROJECT, EVENT_REBUILD_SEARCHINDEXES, EVENT_RESOURCE_AND_PROPERTIES_MODIFIED, EVENT_RESOURCE_COPIED, EVENT_RESOURCE_CREATED, EVENT_RESOURCE_DELETED, EVENT_RESOURCE_MODIFIED, EVENT_RESOURCE_MOVED, EVENT_RESOURCES_AND_PROPERTIES_MODIFIED, EVENT_RESOURCES_MODIFIED, EVENT_SITEMAP_CHANGED, EVENT_UPDATE_EXPORTS, EVENT_USER_MODIFIED, KEY_CHANGE, KEY_DBCONTEXT, KEY_GROUP_ID, KEY_GROUP_NAME, KEY_INDEX_NAMES, KEY_OU_ID, KEY_OU_NAME, KEY_PROJECTID, KEY_PUBLISHID, KEY_PUBLISHLIST, KEY_REPORT, KEY_RESOURCE, KEY_RESOURCES, KEY_USER_ACTION, KEY_USER_ID, KEY_USER_NAME, LISTENERS_FOR_ALL_EVENTS, VALUE_GROUP_MODIFIED_ACTION_CREATE, VALUE_GROUP_MODIFIED_ACTION_DELETE, VALUE_GROUP_MODIFIED_ACTION_WRITE, VALUE_OU_MODIFIED_ACTION_CREATE, VALUE_OU_MODIFIED_ACTION_DELETE, VALUE_USER_MODIFIED_ACTION_ADD_USER_TO_GROUP, VALUE_USER_MODIFIED_ACTION_CREATE_USER, VALUE_USER_MODIFIED_ACTION_DELETE_USER, VALUE_USER_MODIFIED_ACTION_REMOVE_USER_FROM_GROUP, VALUE_USER_MODIFIED_ACTION_RESET_PASSWORD, VALUE_USER_MODIFIED_ACTION_SET_OU, VALUE_USER_MODIFIED_ACTION_WRITE_USER
构造器和说明 |
---|
CmsFlexCache(CmsFlexCacheConfiguration configuration)
Constructor for class CmsFlexCache.
|
限定符和类型 | 方法和说明 |
---|---|
boolean |
cacheOffline()
Indicates if offline project resources are cached.
|
void |
cmsEvent(CmsEvent event)
Implements the CmsEvent interface,
the FlexCache uses the events to clear itself in case a project is published.
|
CmsFlexCacheKey |
getCachedKey(java.lang.String key,
CmsObject cms)
Returns the CmsFlexCacheKey data structure for a given
key (i.e. resource name).
|
java.util.Set<java.lang.String> |
getCachedResources(CmsObject cms)
Returns a set of all cached resource names.
|
java.util.Set<java.lang.String> |
getCachedVariations(java.lang.String key,
CmsObject cms)
Returns all variations in the cache for a given resource name.
|
CmsLruCache |
getEntryLruCache()
Returns the LRU cache where the CacheEntries are cached.
|
boolean |
isEnabled()
Indicates if the cache is enabled (i.e. actually
caching entries) or not.
|
int |
keySize()
Returns the total number of cached resource keys.
|
int |
size()
Returns the total number of entries in the cache.
|
public static final java.lang.String CACHE_OFFLINESUFFIX
public static final java.lang.String CACHE_ONLINESUFFIX
public static final int CLEAR_ALL
public static final int CLEAR_ENTRIES
public static final int CLEAR_OFFLINE_ALL
public static final int CLEAR_OFFLINE_ENTRIES
public static final int CLEAR_ONLINE_ALL
public static final int CLEAR_ONLINE_ENTRIES
public static final int INITIAL_CAPACITY_CACHE
public static final int INITIAL_CAPACITY_VARIATIONS
public static final java.lang.String REPOSITORY_OFFLINE
public static final java.lang.String REPOSITORY_ONLINE
protected CmsLruCache m_variationCache
public CmsFlexCache(CmsFlexCacheConfiguration configuration)
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.
configuration
- the flex cache configurationpublic boolean cacheOffline()
public void cmsEvent(CmsEvent event)
cmsEvent
在接口中 I_CmsEventListener
event
- CmsEvent that has occurredpublic CmsFlexCacheKey getCachedKey(java.lang.String key, CmsObject cms)
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.
key
- the resource name for which to look up the variation forcms
- the CmsObject used for user authorizationpublic java.util.Set<java.lang.String> getCachedResources(CmsObject cms)
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.
cms
- the CmsObject used for user authorizationpublic java.util.Set<java.lang.String> getCachedVariations(java.lang.String key, CmsObject cms)
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.
key
- the resource name for which to look up the variations forcms
- the CmsObject used for user authorizationpublic CmsLruCache getEntryLruCache()
public boolean isEnabled()
public int keySize()
public int size()