Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clear Sitecore cache for an item from cache programmatically

I want to clear Sitecore cache for an item programmatically. I ran the code below. After that I tried to do a web.GetItem on the deleted id and I still get a null. Any suggestions?

Database db = new Database("web");

        if (ID.IsID(id))
        {
            ID itemID = new ID(id);
            //clear data cache
            db.Caches.DataCache.RemoveItemInformation(itemID);

            //clear item cache
            db.Caches.ItemCache.RemoveItem(itemID);

            //clear standard values cache
            db.Caches.StandardValuesCache.RemoveKeysContaining(itemID.ToString());

            //remove path cache
            db.Caches.PathCache.RemoveKeysContaining(itemID.ToString());
        }
like image 241
Gabbar Avatar asked Apr 19 '12 00:04

Gabbar


1 Answers

Looks like you have missed the prefetch cache, here is how to get it:

private Cache GetPrefetchCache(Database database)
    {
        foreach (var cache in global::Sitecore.Caching.CacheManager.GetAllCaches())
        {
            if (cache.Name.Contains(string.Format("Prefetch data({0})", database.Name)))
            {
                return cache;
            }
        }

And the html cache also:

private void ClearAllHtmlCaches() 
{
     foreach (var info in Factory.GetSiteInfoList())
     {
         info.HtmlCache.Clear();
     }
}
like image 118
pbering Avatar answered Sep 30 '22 06:09

pbering