Global caching settings
Go to CMS Site Manager -> Settings -> website, choose your website from the drop-down list. You can configure the following values:
• | Cache content (minutes) - this option specifies that all web parts/controls should cache the content they retrieve from Kentico CMS. You can override this value by setting the Cache minutes property of the web parts to 0, which disables caching for the given control, or generally to some different number of minutes. It's recommended that you cache all possible content that is not modified too often. The drawback of this option is that when you modify some content, the changes appear on the live site after the old version expires in the cache. |
• | Cache images (minutes) - this option is used only for caching of images. It's recommended that you always use it. Kentico CMS automatically removes the cached image when it's modified, so it doesn't cause displaying of outdated content. |
• | Cache page info (minutes) - this option is used for caching of page content and metadata. Since Kentico CMS often retrieves page information many times during a single page processing, it's actually a must to always set this value to at least 10 minutes! Kentico CMS automatically removes the cached page when it's modified, so it doesn't cause displaying of outdated content. |
Full-page caching
Full-page caching represents the most powerful option. It caches the whole page, so it's not necessary to contact the SQL Server and run the page code again when the page is requested second time. You can configure the full-page caching in CMS Desk -> Properties -> General. The configuration is automatically inherited to child pages unless you disable caching on them.
The page stored in the cache is automatically removed when you modify the given page. However, if the page displays other documents (such as news list) and you modify these documents, the page will not be updated.
This option is not suitable for pages with web parts that need to be refreshed very often (e.g. the Random document web part) since you cannot disable caching for particular web parts. For such pages, it's recommended that you do not use full-page caching and use content caching instead.
Full client cache
You can enable full client cache by adding the following key into the configuration/appSettings section of your web.config:
<add key="CMSFullClientCache" value="true"/>
If you enable this type of caching, CSS styles and images will be cached in the client browser. This type of caching can be useful only for live site displaying, as changes made to the page in non-live-site modes would not be displayed due to the caching.
Web part/control-level caching settings
Some web parts/controls used for displaying content have two properties related to caching:
• | Cache item name/CacheItemName - this property specifies the key name under which the content will be stored in the cache; if not specified, the system generates the key name automatically based on the site name, page path, web part ID and current user name. |
• | Cache minutes/CacheMinutes - this property specifies for how long the web part should cache the content retrieved from Kentico CMS. The default value is defined in the Cache content (minutes) site settings value described above. You can override the global value by setting this property to a different number. |
• | Cache dependencies/CacheDependencies - using this property, you can specify on which object change the web part's cache gets cleared. Below, you can find a table showing which dummy cache keys get touched when some object gets changed, including some examples. By entering the appropriate dummy keys, one per one line, you can specify that when the object gets changed, the cache gets cleared. |
If you check the Use default cache dependencies check-box, default settings will be used. The default settings are configured for each web part and include all possible object changes that the content of the web part could depend on.
Object |
Touched keys |
Sample values |
Document (TreeNode) |
node|<sitename>|<aliaspath>|<culture> node|<sitename>|<aliaspath> nodeid|<nodeid> nodeid|<linkednodeid> nodes|<sitename>|<classname>|all + for every parent node: node|<sitename>|<aliaspath>|childnodes |
node|corporatesite|/home|en-us node|corporatesite|/home nodeid|12 nodeid|34 nodes|corporatesite|cms.menuitem|all
node|sitename|/|childnodes |
Any object (except documents) |
<classname>|all <classname>|byid|<id> <classname>|byname|<codename> <classname>|byguid|<guid> |
cms.user|all cms.user|byid|53 cms.user|byname|administrator cms.user|byguid|1ced44f3-f2fc- ... |
Metafile |
metafile|<guid> |
metafile|1ced44f3-f2fc- ... |
Document attachment |
attachment|<guid> |
attachment|1ced44f3-f2fc- ... |
Forum attachment |
forumattachment|<guid> |
forumattachment|1ced44f3-f2fc- ... |
Avatar |
avatarfile|<guid> |
avatarfile|1ced44f3-f2fc- ... |
Media file |
mediafile|<guid> mediafile|preview|<guid> |
mediafile|1ced44f3-f2fc- ... mediafile|preview|1ced44f3-f2fc- ... |
Page template |
template|<id> |
template|12 |
CacheHelper .ClearFullPageCache |
fullpage |
fullpage |
Example 1: let's presume that you have a web part displaying some information about users. Therefore, whenever some user gets its details modified, the web part's cache should be cleared. To assure this, you need to enter cms.user|all into the field, which is the dummy key that would get touched whenever some users' details get changed.
Example 2: now let's presume that your web part is displaying information about one particular user - the administrator. Her user name is administrator, her ID is 53 and her GUID is something beginning with 1ced44f3-f2fc. So if you want to have the cache cleared whenever this user's details are changed, you can use any of the following three keys that are specifying the user by the previously named properties:
• | cms.user|byid|53 |
• | cms.user|byname|administrator |
• | cms.user|byguid|1ced44f3-f2fc-... |
Partial caching
Partial caching is, simply put, full-page caching for web parts. Like with full-page caching, partial caching also stores the output HTML code. But in this case, it doesn't store the whole page, but only the output HTML code of the particular web part. The web parts have the Partial cache minutes and Partial cache dependencies properties, which can be used the same way as the Cache minutes and Cache dependencies properties described above.
Please note: default partial cache dependencies are not specified for the web parts, so if you want to use this feature, you need to specify them manually by entering the dummy keys as described above.
Caching and personalization
If your website contains sections for site members, the caching will be personalized, which means each signed in user will have their own cache. This may lead to large memory consumption, so it's recommended that you set caching to lower values for membership sites.
Previewing modifications made to pages with caching
Caching may confuse the content editors since they will not see the changes they made on the live site immediately. In such case, they can preview their changes in the Preview mode in Kentico CMS Desk since this mode doesn't use caching. The Edit mode doesn't use caching either.
Page url: http://devnet.kentico.com/docs/devguide/index.html?caching_options.htm