2012-04-19 34 views
5

Quiero borrar la memoria caché de Sitecore para un elemento mediante programación. Ejecuté el código a continuación. Después de eso traté de hacer un web.GetItem en el ID eliminado y sigo obteniendo un nulo. ¿Alguna sugerencia?Borrar la memoria caché de Sitecore para un elemento de la memoria caché mediante programación

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

Respuesta

5

Parece que no se ha contestado la caché de captación previa, aquí es cómo conseguirlo:

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

Y la cache HTML también:

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