Which Sitecore caches are affected by Caching.ScavengeInterval, and how?

caching, sitecore, sitecore7

Solution

This isn't going to answer your question directly, but hopefully it will give a push in the right direction.

You can use Sitecore Rocks to view the current caches, there is a column which tells you which caches are flagged to be scavengable:

http://www.sitecore.net/Community/Technical-Blogs/Trevor-Campbell/Posts/2013/02/28-Days-of-Sitecore-Rocks-Manage-Part-3.aspx

On a default install of Sitecore it only affects GeoIp and ClientDataStore. Unfortunately:

The client data store cache stores information about each authenticated user, such as the username or other user properties.

Sitecore Cache Configuration Guide - page 20

That is the wrong cache for your needs, you are interested in the `IsUserInRoleCache` and that is flagged as `Scavengable:false`

You can dig into yourself, use dotPeek decompiler and take a look at the following class in `Sitecore.Kernel.dll`:

- Sitecore.Caching.Cache

- Sitecore.Caching.CacheManager

- Sitecore.Configuration.ClientDataStore

Problem

Looking at caching settings in the web.config I came across the Caching.ScavengeInterval entry: ``` <!-- SCAVENGE INTERVAL Determines how often scavengable caches are scavenged. Default value: 3 minutes. --> <setting name="Caching.ScavengeInterval" value="00:03:00" /> ``` Which caches does it affect, and is there automatic cache scavenging built in to Sitecore? What does Cache scavenging do in a Sitecore context? I'm particularly interested in whether it affects IsUserInRole caching.

Original source