Sdílet prostřednictvím


Přehled ukládání do mezipaměti v ASP.NET Core

Poznámka:

Toto není nejnovější verze tohoto článku. Aktuální verzi tohoto článku najdete ve verzi .NET 9.

Varování

Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi tohoto článku najdete ve verzi .NET 9.

Důležité

Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.

Aktuální verzi tohoto článku najdete ve verzi .NET 9.

Autor: Rick Anderson a Tom Dykstra

Paměťová cache

Ukládání dat do mezipaměti v paměti používá paměť serveru k ukládání dat uložených v mezipaměti. Tento typ ukládání do mezipaměti je vhodný pro jeden server nebo více serverů používajících spřažení relací. Spřažení relací se také označuje jako rychlé relace. Vazba relace znamená, že požadavky od klienta se vždy směrují na stejný server ke zpracování.

Další informace najdete v tématu Ukládání do mezipaměti v paměti v ASP.NET Core a řešení potíží s vazbou relací brány Azure Application Gateway.

Distribuovaná mezipaměť

Použijte distribuovanou mezipaměť k ukládání dat, když je aplikace hostovaná v cloudové nebo serverové farmě. Mezipaměť se sdílí mezi servery, které zpracovávají požadavky. Klient může odeslat požadavek, který zpracovává jakýkoli server ve skupině, pokud jsou k dispozici data uložená v mezipaměti pro klienta. ASP.NET Core funguje s distribuovanými mezipaměťmi SQL Serveru, Redis a NCache .

Další informace naleznete v tématu Distribuované ukládání do mezipaměti v ASP.NET Core.

HybridCache

Rozhraní HybridCache API přemosťuje některé mezery v IDistributedCache API a IMemoryCache API. HybridCache je abstraktní třída s výchozí implementací, která zpracovává většinu aspektů ukládání do mezipaměti a načítání z mezipaměti.

Funkce

HybridCache má následující funkce, které ostatní rozhraní API nemají:

  • Jednotné rozhraní API pro ukládání do mezipaměti v procesu i mimo proces.

    HybridCache je navržený tak, aby byl náhradou za stávající použití IDistributedCache a IMemoryCache, a poskytuje jednoduché rozhraní API pro přidání nového kódu pro ukládání do mezipaměti. Pokud má IDistributedCache aplikace implementaci, HybridCache služba ji použije k ukládání do sekundární mezipaměti. Tato dvouúrovňová strategie ukládání do mezipaměti umožňuje HybridCache zajistit rychlost mezipaměti v paměti a odolnost distribuované nebo trvalé mezipaměti.

  • Ochrana proti tlačenici

    K situaci zvané "cache stampede" dochází, když je zneplatněna často používaná položka mezipaměti a příliš mnoho požadavků se současně pokusí tuto položku znovu vyplnit. HybridCache kombinuje souběžné operace a zajišťuje, aby všechny požadavky na danou odpověď čekaly, až první požadavek naplní mezipaměť.

  • Konfigurovatelná serializace

    Serializace se konfiguruje jako součást registrace služby, přičemž podporu pro typově specifické a generalizované serializátory zajišťují metody WithSerializer a WithSerializerFactory metodami zřetězenými z volání AddHybridCache. Ve výchozím nastavení služba zpracovává string a byte[] interně a používá System.Text.Json pro všechno ostatní. Lze ho nakonfigurovat pro jiné typy serializátorů, jako je protobuf nebo XML.

Pokud chcete zobrazit relativní jednoduchost HybridCache rozhraní API, porovnejte kód, který ho používá k kódu, který používá IDistributedCache. Tady je příklad, jak vypadá použití IDistributedCache :

public class SomeService(IDistributedCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        var key = $"someinfo:{name}:{id}"; // Unique key for this combination.
        var bytes = await cache.GetAsync(key, token); // Try to get from cache.
        SomeInformation info;
        if (bytes is null)
        {
            // Cache miss; get the data from the real source.
            info = await SomeExpensiveOperationAsync(name, id, token);

            // Serialize and cache it.
            bytes = SomeSerializer.Serialize(info);
            await cache.SetAsync(key, bytes, token);
        }
        else
        {
            // Cache hit; deserialize it.
            info = SomeSerializer.Deserialize<SomeInformation>(bytes);
        }
        return info;
    }

    // This is the work we're trying to cache.
    private async Task<SomeInformation> SomeExpensiveOperationAsync(string name, int id,
        CancellationToken token = default)
    { /* ... */ }
}

To je hodně práce, aby to bylo pokaždé správně, včetně věcí jako je serializování. A ve scénáři "chyba cache" můžete skončit s několika souběžnými vlákny, která všechna narazí na chybu cache, všechna načítají podkladová data, všechna je serializují a všechna odesílají tato data do cache.

Tady je ekvivalentní kód, který používá HybridCache:

public class SomeService(HybridCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        return await cache.GetOrCreateAsync(
            $"someinfo:{name}:{id}", // Unique key for this entry.
            async cancel => await SomeExpensiveOperationAsync(name, id, cancel),
            token: token
        );
    }
}

Kód je jednodušší a knihovna poskytuje ochranu proti návalu uživatelů a další funkce, které IDistributedCache neposkytuje.

Kompatibilita

Knihovna HybridCache podporuje starší runtimy .NET, včetně .NET Framework 4.7.2 a .NET Standard 2.0.

Další materiály

Další informace naleznete v následujících zdrojích:

Ukládání odpovědí do mezipaměti

Middleware pro ukládání odpovědí do mezipaměti:

  • Umožňuje ukládání odpovědí serveru do mezipaměti podle HTTP hlaviček mezipaměti. Implementuje standardní sémantiku ukládání do mezipaměti HTTP. Mezipaměti založené na hlavičkách mezipaměti HTTP, jako jsou proxy servery.
  • Aplikace uživatelského rozhraní, jako stránky Razor, obvykle nepřinášejí mnoho výhod, protože prohlížeče nastavují hlavičky požadavků, které zabraňují ukládání do mezipaměti. Ukládání výstupu do mezipaměti, které je k dispozici v .NET 7 nebo novějších, přináší výhody aplikací uživatelského rozhraní. Při ukládání výstupu do mezipaměti se konfigurace rozhodne, co se má ukládat do mezipaměti nezávisle na hlavičkách HTTP.
  • Může být přínosné pro veřejné požadavky rozhraní GET nebo HEAD API od klientů, u kterých jsou splněny podmínky pro ukládání do mezipaměti .

Pokud chcete otestovat ukládání odpovědí do mezipaměti, použijte Fiddler nebo jiný nástroj, který může explicitně nastavit hlavičky požadavků. Pro testování ukládání do mezipaměti se explicitně upřednostňuje nastavení hlaviček. Další informace naleznete v tématu Poradce při potížích.

Další informace najdete v tématu Ukládání odpovědí do mezipaměti v ASP.NET Core.

Ukládání výstupu do mezipaměti

Middleware pro ukládání výstupu do mezipaměti umožňuje ukládání odpovědí HTTP do mezipaměti. Ukládání výstupu do mezipaměti se liší od ukládání odpovědí do mezipaměti následujícími způsoby:

  • Chování při ukládání do mezipaměti je možné konfigurovat na serveru.

    Chování při ukládání odpovědí do mezipaměti je definováno hlavičkami HTTP. Když například navštívíte web s Chromem nebo Edgem, prohlížeč automaticky odešle Cache-control: max-age=0 záhlaví. Tato hlavička efektivně zakáže ukládání odpovědí do mezipaměti, protože server dodržuje pokyny poskytované klientem. Pro každý požadavek se vrátí nová odpověď, i když má server novou odpověď uloženou v mezipaměti. Při ukládání výstupu do mezipaměti klient nepřepíše chování při ukládání do mezipaměti, které nakonfigurujete na serveru.

  • Médium úložiště mezipaměti je rozšiřitelné.

    Paměť se používá ve výchozím nastavení. Ukládání odpovědí do mezipaměti je omezené na paměť.

  • Vybrané položky mezipaměti můžete zneplatnit prostřednictvím kódu programu.

    Závislost ukládání odpovědí do mezipaměti na hlavičkách HTTP neumožňuje mnoho možností zneplatnění položek mezipaměti.

  • Uzamčení prostředků snižuje riziko zátěže mezipaměti a náhlého masového přístupu.

    K situaci zvané "cache stampede" dochází, když je zneplatněna často používaná položka mezipaměti a příliš mnoho požadavků se současně pokusí tuto položku znovu vyplnit. Thundering herd je podobný: příval požadavků na stejnou odpověď, která ještě není v položce mezipaměti. Uzamykání prostředků zajišťuje, že všechny požadavky na danou odpověď čekají, než první požadavek naplní mezipaměť. Ukládání odpovědí do mezipaměti nemá funkci zablokování prostředků.

  • Opětovné obnovení mezipaměti minimalizuje využití šířky pásma.

    Obnovení mezipaměti znamená, že server může místo textu odpovědi uložené v mezipaměti vrátit stavový 304 Not Modified kód HTTP. Tento stavový kód informuje klienta, že odpověď na požadavek se nezmění od toho, co bylo dříve přijato. Ukládání odpovědí do mezipaměti neuvádí opětovné obnovení mezipaměti.

Další informace najdete v tématu Ukládání middlewaru do mezipaměti výstupu v ASP.NET Core.

Pomocník značek mezipaměti

Pomocí pomocníka pro značky Cache můžete ukládat do mezipaměti obsah zobrazení MVC nebo Razor stránky. Pomocník pro ukládání značek do mezipaměti používá uchovávání dat v paměti.

Další informace najdete v tématu Pomocník značky mezipaměti v ASP.NET Core MVC.

Pomocník značky distribuované mezipaměti

Obsah můžete ukládat do mezipaměti ze zobrazení MVC nebo Razor stránky v distribuovaných cloudových scénářích nebo ve scénářích webové farmy pomocí pomocné rutiny značek distribuované mezipaměti. Pomocník značky distribuované mezipaměti používá k ukládání dat SQL Server, Redis nebo NCache .

Další informace viz Distributed Cache Tag Helper v ASP.NET Core.

Paměťová cache

Ukládání dat do mezipaměti v paměti používá paměť serveru k ukládání dat uložených v mezipaměti. Tento typ ukládání do mezipaměti je vhodný pro jeden server nebo více serverů používajících spřažení relací. Spřažení relací se také označuje jako rychlé relace. Vazba relace znamená, že požadavky od klienta se vždy směrují na stejný server ke zpracování.

Další informace najdete v tématu Ukládání do mezipaměti v paměti v ASP.NET Core a řešení potíží s vazbou relací brány Azure Application Gateway.

Distribuovaná mezipaměť

Použijte distribuovanou mezipaměť k ukládání dat, když je aplikace hostovaná v cloudové nebo serverové farmě. Mezipaměť se sdílí mezi servery, které zpracovávají požadavky. Klient může odeslat požadavek, který zpracovává jakýkoli server ve skupině, pokud jsou k dispozici data uložená v mezipaměti pro klienta. ASP.NET Core funguje s distribuovanými mezipaměťmi SQL Serveru, Redis a NCache .

Další informace naleznete v tématu Distribuované ukládání do mezipaměti v ASP.NET Core.

HybridCache

Rozhraní HybridCache API přemosťuje některé mezery v IDistributedCache API a IMemoryCache API. HybridCache je abstraktní třída s výchozí implementací, která zpracovává většinu aspektů ukládání do mezipaměti a načítání z mezipaměti.

Funkce

HybridCache má následující funkce, které ostatní rozhraní API nemají:

  • Jednotné rozhraní API pro ukládání do mezipaměti v procesu i mimo proces.

    HybridCache je navržený tak, aby byl náhradou za stávající použití IDistributedCache a IMemoryCache, a poskytuje jednoduché rozhraní API pro přidání nového kódu pro ukládání do mezipaměti. Pokud má IDistributedCache aplikace implementaci, HybridCache služba ji použije k ukládání do sekundární mezipaměti. Tato dvouúrovňová strategie ukládání do mezipaměti umožňuje HybridCache zajistit rychlost mezipaměti v paměti a odolnost distribuované nebo trvalé mezipaměti.

  • Ochrana proti tlačenici

    K situaci zvané "cache stampede" dochází, když je zneplatněna často používaná položka mezipaměti a příliš mnoho požadavků se současně pokusí tuto položku znovu vyplnit. HybridCache kombinuje souběžné operace a zajišťuje, aby všechny požadavky na danou odpověď čekaly, až první požadavek naplní mezipaměť.

  • Konfigurovatelná serializace

    Serializace se konfiguruje jako součást registrace služby, přičemž podporu pro typově specifické a generalizované serializátory zajišťují metody WithSerializer a WithSerializerFactory metodami zřetězenými z volání AddHybridCache. Ve výchozím nastavení služba zpracovává string a byte[] interně a používá System.Text.Json pro všechno ostatní. Lze ho nakonfigurovat pro jiné typy serializátorů, jako je protobuf nebo XML.

Pokud chcete zobrazit relativní jednoduchost HybridCache rozhraní API, porovnejte kód, který ho používá k kódu, který používá IDistributedCache. Tady je příklad, jak vypadá použití IDistributedCache :

public class SomeService(IDistributedCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        var key = $"someinfo:{name}:{id}"; // Unique key for this combination.
        var bytes = await cache.GetAsync(key, token); // Try to get from cache.
        SomeInformation info;
        if (bytes is null)
        {
            // Cache miss; get the data from the real source.
            info = await SomeExpensiveOperationAsync(name, id, token);

            // Serialize and cache it.
            bytes = SomeSerializer.Serialize(info);
            await cache.SetAsync(key, bytes, token);
        }
        else
        {
            // Cache hit; deserialize it.
            info = SomeSerializer.Deserialize<SomeInformation>(bytes);
        }
        return info;
    }

    // This is the work we're trying to cache.
    private async Task<SomeInformation> SomeExpensiveOperationAsync(string name, int id,
        CancellationToken token = default)
    { /* ... */ }
}

To je hodně práce, aby to bylo pokaždé správně, včetně věcí jako je serializování. A ve scénáři "chyba cache" můžete skončit s několika souběžnými vlákny, která všechna narazí na chybu cache, všechna načítají podkladová data, všechna je serializují a všechna odesílají tato data do cache.

Tady je ekvivalentní kód, který používá HybridCache:

public class SomeService(HybridCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        return await cache.GetOrCreateAsync(
            $"someinfo:{name}:{id}", // Unique key for this entry.
            async cancel => await SomeExpensiveOperationAsync(name, id, cancel),
            token: token
        );
    }
}

Kód je jednodušší a knihovna poskytuje ochranu proti návalu uživatelů a další funkce, které IDistributedCache neposkytuje.

Kompatibilita

Knihovna HybridCache podporuje starší runtimy .NET, včetně .NET Framework 4.7.2 a .NET Standard 2.0.

Další materiály

Další informace naleznete v následujících zdrojích:

Pomocník značek mezipaměti

Pomocí pomocníka pro značky Cache můžete ukládat do mezipaměti obsah zobrazení MVC nebo Razor stránky. Pomocník pro ukládání značek do mezipaměti používá uchovávání dat v paměti.

Další informace najdete v tématu Pomocník značky mezipaměti v ASP.NET Core MVC.

Pomocník značky distribuované mezipaměti

Obsah můžete ukládat do mezipaměti ze zobrazení MVC nebo Razor stránky v distribuovaných cloudových scénářích nebo ve scénářích webové farmy pomocí pomocné rutiny značek distribuované mezipaměti. Pomocník značky distribuované mezipaměti používá k ukládání dat SQL Server, Redis nebo NCache .

Další informace viz Distributed Cache Tag Helper v ASP.NET Core.

Ukládání odpovědí do mezipaměti

Middleware pro ukládání odpovědí do mezipaměti:

  • Umožňuje ukládání odpovědí serveru do mezipaměti podle HTTP hlaviček mezipaměti. Implementuje standardní sémantiku ukládání do mezipaměti HTTP. Mezipaměti založené na hlavičkách mezipaměti HTTP, jako jsou proxy servery.
  • Aplikace uživatelského rozhraní, jako stránky Razor, obvykle nepřinášejí mnoho výhod, protože prohlížeče nastavují hlavičky požadavků, které zabraňují ukládání do mezipaměti. Ukládání výstupu do mezipaměti, které je k dispozici v .NET 7 nebo novějších, přináší výhody aplikací uživatelského rozhraní. Při ukládání výstupu do mezipaměti se konfigurace rozhodne, co se má ukládat do mezipaměti nezávisle na hlavičkách HTTP.
  • Může být přínosné pro veřejné požadavky rozhraní GET nebo HEAD API od klientů, u kterých jsou splněny podmínky pro ukládání do mezipaměti .

Pokud chcete otestovat ukládání odpovědí do mezipaměti, použijte Fiddler nebo jiný nástroj, který může explicitně nastavit hlavičky požadavků. Pro testování ukládání do mezipaměti se explicitně upřednostňuje nastavení hlaviček. Další informace naleznete v tématu Poradce při potížích.

Ukládání výstupu do mezipaměti

Middleware pro ukládání výstupu do mezipaměti umožňuje ukládání odpovědí HTTP do mezipaměti. Ukládání výstupu do mezipaměti se liší od ukládání odpovědí do mezipaměti následujícími způsoby:

  • Chování při ukládání do mezipaměti je možné konfigurovat na serveru.

    Chování při ukládání odpovědí do mezipaměti je definováno hlavičkami HTTP. Když například navštívíte web s Chromem nebo Edgem, prohlížeč automaticky odešle Cache-control: max-age=0 záhlaví. Tato hlavička efektivně zakáže ukládání odpovědí do mezipaměti, protože server dodržuje pokyny poskytované klientem. Pro každý požadavek se vrátí nová odpověď, i když má server novou odpověď uloženou v mezipaměti. Při ukládání výstupu do mezipaměti klient nepřepíše chování při ukládání do mezipaměti, které nakonfigurujete na serveru.

  • Médium úložiště mezipaměti je rozšiřitelné.

    Paměť se používá ve výchozím nastavení. Ukládání odpovědí do mezipaměti je omezené na paměť.

  • Vybrané položky mezipaměti můžete zneplatnit prostřednictvím kódu programu.

    Závislost ukládání odpovědí do mezipaměti na hlavičkách HTTP neumožňuje mnoho možností zneplatnění položek mezipaměti.

  • Uzamčení prostředků snižuje riziko zátěže mezipaměti a náhlého masového přístupu.

    K situaci zvané "cache stampede" dochází, když je zneplatněna často používaná položka mezipaměti a příliš mnoho požadavků se současně pokusí tuto položku znovu vyplnit. Thundering herd je podobný: příval požadavků na stejnou odpověď, která ještě není v položce mezipaměti. Uzamykání prostředků zajišťuje, že všechny požadavky na danou odpověď čekají, než první požadavek naplní mezipaměť. Ukládání odpovědí do mezipaměti nemá funkci zablokování prostředků.

  • Opětovné obnovení mezipaměti minimalizuje využití šířky pásma.

    Obnovení mezipaměti znamená, že server může místo textu odpovědi uložené v mezipaměti vrátit stavový 304 Not Modified kód HTTP. Tento stavový kód informuje klienta, že odpověď na požadavek se nezmění od toho, co bylo dříve přijato. Ukládání odpovědí do mezipaměti neuvádí opětovné obnovení mezipaměti.

Paměťová cache

Ukládání dat do mezipaměti v paměti používá paměť serveru k ukládání dat uložených v mezipaměti. Tento typ ukládání do mezipaměti je vhodný pro jeden server nebo více serverů používajících spřažení relací. Spřažení relací se také označuje jako rychlé relace. Vazba relace znamená, že požadavky od klienta se vždy směrují na stejný server ke zpracování.

Další informace najdete v tématu Ukládání do mezipaměti v paměti v ASP.NET Core a řešení potíží s vazbou relací brány Azure Application Gateway.

Distribuovaná mezipaměť

Použijte distribuovanou mezipaměť k ukládání dat, když je aplikace hostovaná v cloudové nebo serverové farmě. Mezipaměť se sdílí mezi servery, které zpracovávají požadavky. Klient může odeslat požadavek, který zpracovává jakýkoli server ve skupině, pokud jsou k dispozici data uložená v mezipaměti pro klienta. ASP.NET Core funguje s distribuovanými mezipaměťmi SQL Serveru, Redis a NCache .

Další informace naleznete v tématu Distribuované ukládání do mezipaměti v ASP.NET Core.

HybridCache

Rozhraní HybridCache API přemosťuje některé mezery v IDistributedCache API a IMemoryCache API. HybridCache je abstraktní třída s výchozí implementací, která zpracovává většinu aspektů ukládání do mezipaměti a načítání z mezipaměti.

Funkce

HybridCache má následující funkce, které ostatní rozhraní API nemají:

  • Jednotné rozhraní API pro ukládání do mezipaměti v procesu i mimo proces.

    HybridCache je navržený tak, aby byl náhradou za stávající použití IDistributedCache a IMemoryCache, a poskytuje jednoduché rozhraní API pro přidání nového kódu pro ukládání do mezipaměti. Pokud má IDistributedCache aplikace implementaci, HybridCache služba ji použije k ukládání do sekundární mezipaměti. Tato dvouúrovňová strategie ukládání do mezipaměti umožňuje HybridCache zajistit rychlost mezipaměti v paměti a odolnost distribuované nebo trvalé mezipaměti.

  • Ochrana proti tlačenici

    K situaci zvané "cache stampede" dochází, když je zneplatněna často používaná položka mezipaměti a příliš mnoho požadavků se současně pokusí tuto položku znovu vyplnit. HybridCache kombinuje souběžné operace a zajišťuje, aby všechny požadavky na danou odpověď čekaly, až první požadavek naplní mezipaměť.

  • Konfigurovatelná serializace

    Serializace se konfiguruje jako součást registrace služby, přičemž podporu pro typově specifické a generalizované serializátory zajišťují metody WithSerializer a WithSerializerFactory metodami zřetězenými z volání AddHybridCache. Ve výchozím nastavení služba zpracovává string a byte[] interně a používá System.Text.Json pro všechno ostatní. Lze ho nakonfigurovat pro jiné typy serializátorů, jako je protobuf nebo XML.

Pokud chcete zobrazit relativní jednoduchost HybridCache rozhraní API, porovnejte kód, který ho používá k kódu, který používá IDistributedCache. Tady je příklad, jak vypadá použití IDistributedCache :

public class SomeService(IDistributedCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        var key = $"someinfo:{name}:{id}"; // Unique key for this combination.
        var bytes = await cache.GetAsync(key, token); // Try to get from cache.
        SomeInformation info;
        if (bytes is null)
        {
            // Cache miss; get the data from the real source.
            info = await SomeExpensiveOperationAsync(name, id, token);

            // Serialize and cache it.
            bytes = SomeSerializer.Serialize(info);
            await cache.SetAsync(key, bytes, token);
        }
        else
        {
            // Cache hit; deserialize it.
            info = SomeSerializer.Deserialize<SomeInformation>(bytes);
        }
        return info;
    }

    // This is the work we're trying to cache.
    private async Task<SomeInformation> SomeExpensiveOperationAsync(string name, int id,
        CancellationToken token = default)
    { /* ... */ }
}

To je hodně práce, aby to bylo pokaždé správně, včetně věcí jako je serializování. A ve scénáři "chyba cache" můžete skončit s několika souběžnými vlákny, která všechna narazí na chybu cache, všechna načítají podkladová data, všechna je serializují a všechna odesílají tato data do cache.

Tady je ekvivalentní kód, který používá HybridCache:

public class SomeService(HybridCache cache)
{
    public async Task<SomeInformation> GetSomeInformationAsync
        (string name, int id, CancellationToken token = default)
    {
        return await cache.GetOrCreateAsync(
            $"someinfo:{name}:{id}", // Unique key for this entry.
            async cancel => await SomeExpensiveOperationAsync(name, id, cancel),
            token: token
        );
    }
}

Kód je jednodušší a knihovna poskytuje ochranu proti návalu uživatelů a další funkce, které IDistributedCache neposkytuje.

Kompatibilita

Knihovna HybridCache podporuje starší runtimy .NET, včetně .NET Framework 4.7.2 a .NET Standard 2.0.

Další materiály

Další informace naleznete v následujících zdrojích:

Pomocník značek mezipaměti

Pomocí pomocníka pro značky Cache můžete ukládat do mezipaměti obsah zobrazení MVC nebo Razor stránky. Pomocník pro ukládání značek do mezipaměti používá uchovávání dat v paměti.

Další informace najdete v tématu Pomocník značky mezipaměti v ASP.NET Core MVC.

Pomocník značky distribuované mezipaměti

Obsah můžete ukládat do mezipaměti ze zobrazení MVC nebo Razor stránky v distribuovaných cloudových scénářích nebo ve scénářích webové farmy pomocí pomocné rutiny značek distribuované mezipaměti. Pomocník značky distribuované mezipaměti používá k ukládání dat SQL Server, Redis nebo NCache .

Další informace viz Distributed Cache Tag Helper v ASP.NET Core.

Ukládání odpovědí do mezipaměti

Middleware pro ukládání odpovědí do mezipaměti:

  • Umožňuje ukládání odpovědí serveru do mezipaměti podle HTTP hlaviček mezipaměti. Implementuje standardní sémantiku ukládání do mezipaměti HTTP. Mezipaměti založené na hlavičkách mezipaměti HTTP, jako jsou proxy servery.
  • Aplikace uživatelského rozhraní, jako stránky Razor, obvykle nepřinášejí mnoho výhod, protože prohlížeče nastavují hlavičky požadavků, které zabraňují ukládání do mezipaměti. Ukládání výstupu do mezipaměti, které je k dispozici v .NET 7 nebo novějších, přináší výhody aplikací uživatelského rozhraní. Při ukládání výstupu do mezipaměti se konfigurace rozhodne, co se má ukládat do mezipaměti nezávisle na hlavičkách HTTP.
  • Může být přínosné pro veřejné požadavky rozhraní GET nebo HEAD API od klientů, u kterých jsou splněny podmínky pro ukládání do mezipaměti .

Pokud chcete otestovat ukládání odpovědí do mezipaměti, použijte Fiddler nebo jiný nástroj, který může explicitně nastavit hlavičky požadavků. Pro testování ukládání do mezipaměti se explicitně upřednostňuje nastavení hlaviček. Další informace naleznete v tématu Poradce při potížích.

Ukládání výstupu do mezipaměti

Ukládání výstupu do mezipaměti je k dispozici v .NET 7 nebo novějším.