Udostępnij za pośrednictwem


Śledzenie wpisów połączonej pamięci podręcznej

MemoryCache śledzi wpisy połączonej pamięci podręcznej, dzięki czemu opcje są propagowane. W poniższym przykładzie expirationToken dodano element for child jest również stosowany do elementu parent:

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

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

Ze względu na wydajność platforma .NET 7 nie śledzi już domyślnie wpisów połączonej pamięci podręcznej. Można jednak włączyć śledzenie przy użyciu nowej opcji.

Wprowadzona wersja

.NET 7

Poprzednie zachowanie

Przed platformą .NET 7 śledzono wpisy połączonej pamięci podręcznej, MemoryCache aby umożliwić propagację opcji. Nie można wyłączyć śledzenia.

Nowe zachowanie

Począwszy od platformy .NET 7, MemoryCache nie śledzi domyślnie wpisów połączonej pamięci podręcznej. Opcja MemoryCacheOptions.TrackLinkedCacheEntries została dodana, aby można było kontrolować, czy wpisy połączonej pamięci podręcznej są śledzone, czy nie.

Typ zmiany powodującej niezgodność

Ta zmiana może mieć wpływ na zgodność binarną.

Przyczyna wprowadzenia zmiany

Ta zmiana została wprowadzona w celu zwiększenia wydajności. Śledzenie wewnętrznie używa metody AsyncLocal<T>, która jest kosztowna i dodaje nietrygalne obciążenie.

Jeśli chcesz MemoryCache kontynuować śledzenie wpisów połączonej pamięci podręcznej, aby można było propagować opcje, ustaw wartość MemoryCacheOptions.TrackLinkedCacheEntriestrue.

var options = new MemoryCacheOptions
{
    TrackLinkedCacheEntries = true
};

var cache = new MemoryCache(options);

Dotyczy interfejsów API