2012-04-19 4 views
5

Desidero cancellare la cache Sitecore per un elemento a livello di codice. Ho eseguito il codice qui sotto. Dopo che ho provato a fare un web.GetItem sull'ID cancellato e ottengo ancora un null. Eventuali suggerimenti?Cancella cache Sitecore per un elemento dalla cache a livello di codice

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()); 
     } 

risposta

5

Sembra che hai perso la cache di prefetch, ecco come ottenerlo:

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; 
      } 
     } 

e la cache html anche:

private void ClearAllHtmlCaches() 
{ 
    foreach (var info in Factory.GetSiteInfoList()) 
    { 
     info.HtmlCache.Clear(); 
    } 
}