---
title: Setting cache dependencies
related:
  - https://docs.kentico.com/13/configuring-xperience/configuring-caching.md
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

Cache dependencies allow the application to automatically clear cached data when related objects are modified.

The system uses _**dummy cache keys**_ to create dependencies between cached data and other objects. Dummy keys are cache items without any data that represent objects or groups of objects. When an object is modified, the system "touches" the corresponding dummy keys, which causes the cache to delete all items that depend on the given dummy keys.

> **Info:** **Sample scenario**
>
> A page with the _/Products_ alias path displays a list of products (pages), which are placed as child items in the content tree. The product data is [cached in the page's code](https://docs.kentico.com/13/configuring-xperience/configuring-caching/caching-on-mvc-sites.md) and has a dependency on the _**node|samplesite|/products|childnodes**_ dummy key, which the system creates automatically.
>
> When a visitor requests the Products page, the product data for the list is loaded from the database and stored in the content cache. If a child page of the Products page is modified, the dummy key is touched, and the cache deletes the dependent data.

The following table shows which dummy cache keys are touched when objects are modified:

| Object type                       | Touched dummy keys                                                                                                                                                                                                                                                                                                                 | Sample dummy key values                                                                                                                                                                                                                                                                                                              |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Pages**<br>(content tree nodes) | node\|\|\|<br>node\|\|<br>nodeid\|<br>nodeid\|<br>documentid\|<br>documentid\|\|attachments<br>documentguid\|\|<br>nodes\|\|\|all<br>nodeguid\|\|<br>nodeorder _(touched when the order of **any** page in the content tree is changed)_<br>**+ for all ancestors of the modified page:**<br>node\|\|\|childnodes                  | node\|samplesite\|/home\|en-us<br>node\|samplesite\|/home<br>nodeid\|12<br>nodeid\|34<br>documentid\|39<br>documentid\|39\|attachments<br>documentguid\|samplesite\|a58ed488-5545-48d0- ...<br>nodes\|samplesite\|cms.menuitem\|all<br>nodeguid\|samplesite\|a58ed488-5545-48d0- ...<br>nodeorder<br>node\|samplesite\|/\|childnodes |
| **Objects**<br>(not pages)        | \|all<br>\|byid\|<br>\|byname\|<br>\|byguid\|<br>**Tip**: You can find the object type values in the **System** application on the **Object types** tab.                                                                                                                                                                           | cms.user\|all<br>cms.user\|byid\|53<br>cms.user\|byname\|administrator<br>cms.user\|byguid\|1ced44f3-f2fc- ...                                                                                                                                                                                                                       |
| Media files                       | mediafile\|<br>mediafile\|preview\|                                                                                                                                                                                                                                                                                                | mediafile\|1ced44f3-f2fc- ...<br>mediafile\|preview\|1ced44f3-f2fc- ...                                                                                                                                                                                                                                                              |
| Metafiles                         | metafile\|                                                                                                                                                                                                                                                                                                                         | metafile\|1ced44f3-f2fc- ...                                                                                                                                                                                                                                                                                                         |
| Page attachments                  | cms.attachment\|all<br>documentid\|<br>documentid\|\|attachments<br>attachment\|                                                                                                                                                                                                                                                   | cms.attachment\|all<br>documentid\|32<br>documentid\|32\|attachments<br>attachment\|1ced44f3-f2fc- ...                                                                                                                                                                                                                               |
| Page relationships                | nodeid\|\|relationships                                                                                                                                                                                                                                                                                                            | nodeid\|5\|relationships                                                                                                                                                                                                                                                                                                             |
| Settings                          | cms.settingskey\|<br>_(touched when the **global** value of the setting is changed)_<br>cms.settingskey\|\|<br>_(touched when the site-specific value of the setting is changed)_<br>**Tip**: You can find the setting key code name values in the **Modules** application by editing any module and opening the **Settings** tab. | cms.settingskey\|cmspagedescriptionprefix<br>cms.settingskey\|1\|cmspagedescriptionprefix                                                                                                                                                                                                                                            |
| Avatars                           | avatarfile\|                                                                                                                                                                                                                                                                                                                       | avatarfile\|1ced44f3-f2fc- ...                                                                                                                                                                                                                                                                                                       |
| Custom table data records         | customtableitem.\|all<br>customtableitem.\|byid\|                                                                                                                                                                                                                                                                                  | customtableitem.customtable.sampletable\|all<br>customtableitem.customtable.sampletable\|byid\|2                                                                                                                                                                                                                                     |

> **Info:** **Dependencies on form data records**
>
> The system currently does not touch any dummy cache keys when changes occur for data submitted via [forms](https://docs.kentico.com/13/managing-website-content/forms.md).
>
> As a workaround, developers can prepare custom [event handlers](https://docs.kentico.com/13/custom-development/handling-global-events.md) for [BizFormItemEvents](https://docs.kentico.com/13/custom-development/handling-global-events/reference-global-system-events.md#bizformitemevents). Use the handler method to touch a custom cache key, and then enter the key into your cache dependencies. For example:
>
> ```csharp
>
> private void FormItem_InsertAfterHandler(object sender, BizFormItemEventArgs e)
> {
>     // Touches a custom cache key, for example: "customformdata|bizform.contactus"
>     CacheHelper.TouchKey("customformdata|" + e.Item.BizFormClassName);
> }
>
> ```

## Adding custom cache dependencies

You can set custom cache dependencies when caching retrieved data or page output using the API. See [Caching on MVC sites](https://docs.kentico.com/13/configuring-xperience/configuring-caching/caching-on-mvc-sites.md).

Create the dependencies by preparing a string with the names of **dummy cache keys**, and then call the _CacheHelper.GetCacheDependency_ method on the string. The system automatically clears the related cache when the specified dummy keys are touched (i.e. when the corresponding objects are modified).

### Example

> **Info:** **Scenario**: You have a page displaying a list of articles, and the code used to retrieve the article data uses the [API for caching](https://docs.kentico.com/13/configuring-xperience/configuring-caching/caching-in-custom-code.md). You need to clear the cached article data whenever one of the article pages is modified.
>
> **Solution**: When preparing the _CacheSettings_ parameter in the code, add the **nodes|||all** dummy key as a cache dependency. The system touches this dummy key whenever any article page of the given type is updated.
