Menghapus Item dari Prefetch Cache di 9.2
Kami telah mendasarkan penerapan kami pada Hapus cache Sitecore untuk item dari cache secara terprogram untuk menghapus item dari cache prefetch seperti di bawah ini
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;
}
}
}
Tapi kelas Cache 8,2 diubah menjadi ICacheInfo di 9.2 dan RemoveKeysContaining di tidak tersedia. Apakah ada cara untuk menghapus item tertentu dari prefetchCache di 9.2
Jawaban
Sitecore telah mengubah implementasinya menjadi ICacheInfo. Namun, Anda masih dapat menggunakan metode RemoveKeysContainingpada cache setelah Anda menerapkan casting Sitecore.Caching.Cache.
The ICacheInfomemiliki beberapa implementasi dan kelas Cachemerupakan salah satu implementasi.
Silakan lihat cuplikan kode di bawah ini:
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;
}
}
}
Perhatikan bahwa Cache berasal dari namespace Sitecore.Caching.Cachedari assemblySitecore.Kernel.dll