연결된 캐시 항목 추적

MemoryCache는 옵션은 전파되도록 연결된 캐시 항목을 추적합니다. 다음 예제에서는 child에 대해 추가된 expirationTokenparent에 적용됩니다.

using (var parent = cache.CreateEntry(key))
{
    parent.SetValue(obj);

    using (var child = cache.CreateEntry(key1))
    {
        child.SetValue(obj);
        child.AddExpirationToken(expirationToken);
    }
}

성능상의 이유로 .NET 7은 기본적으로 연결된 캐시 항목을 더 이상 추적하지 않습니다. 그러나 새 옵션을 사용하여 추적을 사용하도록 설정할 수 있습니다.

도입된 버전

.NET 7

이전 동작

.NET 7 이전에는 MemoryCache에서 옵션을 전파할 수 있도록 연결된 캐시 항목을 추적했습니다. 추적을 사용하지 않도록 설정할 수 없습니다.

새 동작

.NET 7부터 MemoryCache는 기본적으로 연결된 캐시 항목을 추적하지 않습니다. 연결된 캐시 항목이 추적되는지 여부를 제어할 수 있도록 MemoryCacheOptions.TrackLinkedCacheEntries 옵션이 추가되었습니다.

호환성이 손상되는 변경의 형식

이 변경은 이진 호환성에 영향을 줄 수 있습니다.

변경 이유

이 변경은 성능 향상을 위해 도입되었습니다. 추적은 내부적으로 AsyncLocal<T>을 사용합니다. 이 경우 비용이 많이 들고 사소한 오버헤드가 추가됩니다.

MemoryCache에서 옵션을 전파할 수 있도록 연결된 캐시 항목을 계속 추적하려면 MemoryCacheOptions.TrackLinkedCacheEntriestrue로 설정합니다.

var options = new MemoryCacheOptions
{
    TrackLinkedCacheEntries = true
};

var cache = new MemoryCache(options);

영향을 받는 API