Sitecore Platform ships with multiple levels of caches in order to maximize the performance. The item fetch operation is backed by the following multiple caching layers by default:
The platform caching layer logic is located under the Sitecore.Caching namespace, while main cache-related logic is exposed by the Sitecore.Abstractions.BaseCacheManager contract or the static Sitecore.Caching.CacheManager class. The ClearAllCaches() API provided by the CacheManager leads to clearing all previously registered caches, likely causing a temporary performance drop. The corresponding log entry is written into Sitecore log files:
WARN All caches have been cleared. This can decrease performance considerably.
The Sitecore.Caching.ICacheInfo interface defines the Clear() API method that allows clearing caches on a more granular level as well.
Sitecore Platform provides diagnostic capabilities to locate the cause for cache clearing.
To configure the cache cleanup mechanism to write diagnostic messages:
<setting name="Caching.DebugEnabled" value="true" />
<root> <priority value="DEBUG" /> </root>
You can find the debug log entry with the cache cleanup call stack:
6080 2018:07:04 16:08:22 DEBUG The 'web[blobIDs]' cache has been cleared. Entries removed: 0 StackTrace: at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at Sitecore.Caching.Generics.Cache`1.DoLogDebugMessage(String messagePrefix, String messageBody, Boolean ensureDebugEnabled) in at Sitecore.Caching.Generics.Cache`1.Clear() at Sitecore.sitecore.admin.CacheAdmin.ClearAllButtonClick(Object sender, EventArgs arguments) at System.Web.UI.WebControls.Button.OnClick(EventArgs e) at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
When the investigation is over, revert the configuration change.