9.2でプリフェッチキャッシュからアイテムをクリアする
Aug 21 2020
以下のように、プログラムでキャッシュからアイテムのSitecoreキャッシュをクリアして、プリフェッチキャッシュからアイテムをクリアする実装に基づいています。
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;
}
}
}
ただし、8.2のCacheクラスは9.2ではICacheInfoに変更されており、RemoveKeysContainingは使用できません。9.2でprefetchCacheから特定のアイテムを削除する方法はありますか?
回答
1 HishaamNamooya Aug 21 2020 at 21:29
Sitecoreは実装をに変更しましたICacheInfo
。ただし、RemoveKeysContaining
Sitecore.Caching.Cacheキャストを適用した後でも、キャッシュでこのメソッドを使用できます。
にICacheInfo
は複数の実装があり、クラスCache
は実装の1つです。
以下のコードスニペットを参照してください。
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;
}
}
}
キャッシュはSitecore.Caching.Cache
アセンブリの名前空間からのものであることに注意してくださいSitecore.Kernel.dll