Löschen eines Elements aus dem Prefetch-Cache in 9.2
Wir haben unsere Implementierung auf das programmgesteuerte Löschen des Sitecore-Cache für ein Element aus dem Cache gestützt , um ein Element wie unten beschrieben aus dem Prefetch-Cache zu löschen
Cache prefetchCache = GetPrefetchCache(Database database);
prefetchCache.RemoveKeysContaining(itemID.ToString());
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;
}
}
}
Die Cache-Klasse von 8.2 wird jedoch in 9.2 in ICacheInfo geändert, und RemoveKeysContaining ist in nicht verfügbar. Gibt es eine Möglichkeit, ein bestimmtes Element in 9.2 aus prefetchCache zu entfernen?
Antworten
Sitecore hat die Implementierung in geändert ICacheInfo. Sie können die Methode jedoch weiterhin RemoveKeysContainingfür den Cache verwenden, nachdem Sie das Sitecore.Caching.Cache-Casting angewendet haben.
Das ICacheInfohat mehrere Implementierungen und die Klasse Cacheist eine der Implementierungen.
Bitte sehen Sie unten Code-Snippet:
Cache prefetchCache = GetPrefetchCache(database);
//Check for null before applying method
if (prefetchCache != null)
{
prefetchCache.RemoveKeysContaining(itemID.ToString());
}
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 as Cache;
}
}
}
Beachten Sie, dass der Cache aus dem Namespace Sitecore.Caching.Cacheder Assembly stammtSitecore.Kernel.dll