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. 그러나 RemoveKeysContainingSitecore.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