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
는 구현 중 하나입니다.
아래 코드 스 니펫을 참조하십시오.
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;
}
}
}
Cache는 Sitecore.Caching.Cache
어셈블리 의 네임 스페이스 에서 가져온 것입니다.Sitecore.Kernel.dll