Sitecore is already smart enough to do cache clearing automatically. But in many cases, we might need to do manually clear different cache for particular items. We can do partial cache clear as below for any item we want whether it is in Prefetch Cache, Data Cache, Item Cache, StandardValue Cache, HTML Cache, etc.
Let's see how we can clear different cache.
Let's see how we can clear different cache.
Clear Item level Cache - Prefetch Cache, Data Cache, Item Cache, Standard Value Cache
Suppose, we want to clear Prefetch cache, Data Cache and Item Cache for /sitecore/content/Homepage/
string itemPath = "/sitecore/content/Homepage/";
Item home = Sitecore.Context.Database.GetItem(itemPath);
public void ClearItemLevelCache(home)
{
// Clear item's Item Cache
Sitecore.Context.Database.Caches.ItemCache.RemoveItem(home.ID);
// Clear item's Data Cache
Sitecore.Context.Database.Caches.DataCache.RemoveItemInformation(home.ID);
// Clear item's Standard Value Cache
Sitecore.Context.Database.Caches.StandardValuesCache.RemoveKeysContaining(home.ID.ToString());
// Clear item's Prefetch Cache
CacheManager.GetSqlPrefetchCache(home.Database.Name).Remove(home);
}
public static Cache GetSqlPrefetchCache(string database)
{
return Caching.CacheManager.FindCacheByName("SqlDataProvider - Prefetch data(" + database + ")");
}
Clear Sitewise Cache
Suppose, we want to clear cache for Context site.
SiteContext site = Context.Site;
public void ClearSiteCache(SiteContext site)
{
SiteCaches siteCache = site.SiteCaches;
// Clear HTML Cache
siteCache.HtmlCache.Clear();
// Clear Registry Cache
siteCache.RegistryCache.Clear();
// Clear ViewState Cache
siteCache.ViewStateCache.Clear();
// Clear FilteredItemsCache
siteCache.FilteredItemsCache.Clear();
// Clear XSL Cache
siteCache.XSLCache.Clear();
}
Clear other Sitecore level Cache
Similarly we can also clear PathCache, AccessResultCache, etc. as below:
Caching.CacheManager.GetPathCache(Sitecore.Context.Database).Clear();
Caching.CacheManager.GetAccessResultCache().RemovePrefix(database.Name);
Sitecore.Caching.CacheManager provides all functions for getting and clearing all caches.
No comments:
Post a Comment