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 najdete v tomto článku ve verzi .NET 9.

Upozorňující

Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku 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 najdete v tomto článku ve verzi .NET 9.

Autor: Rick Anderson a Tom Dykstra

Ukládání do mezipaměti v paměti

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. Spřažení relace znamená, že požadavky z 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íží se spřažením relací brány Aplikace Azure lication.

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řemísní některé mezery v IDistributedCache rozhraních API a IMemoryCache rozhraníCH 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 nahradil stávající IDistributedCache a použití, IMemoryCache a poskytuje jednoduché rozhraní API pro přidání nového kódu 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 s razítkem

    Při odvolání často používané položky mezipaměti dochází k razítku mezipaměti a příliš mnoho požadavků se pokusí znovu vyplnit stejnou položku mezipaměti ve stejnou dobu. 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 s podporou typově specifických a generalizovaných serializátorů prostřednictvím WithSerializer metod a WithSerializerFactory metod zřetězených AddHybridCache z volání. Ve výchozím nastavení služba zpracovává string a byte[] interně a používá System.Text.Json se 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, abyste se dostali správně pokaždé, včetně věcí, jako je serializace. A ve scénáři "miss mezipaměti" můžete skončit s několika souběžnými vlákny, všechny získání chybějící mezipaměti, všechny načítání podkladových dat, všechny serializace a všechny odesílání dat do mezipaměti.

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 razítka a další funkce, které IDistributedCache ne.

Kompatibilita

Knihovna HybridCache podporuje starší moduly runtime .NET až .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 na základě hlaviček mezipaměti HTTP. 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 Razor jsou stránky, obvykle nejsou užitečné, protože prohlížeče obvykle nastavují hlavičky požadavků, které brání ukládání do mezipaměti. Ukládání výstupu do mezipaměti, které je dostupné v ASP.NET Core 7.0 a 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 vám ponechá několik možností zneplatnění položek mezipaměti.

  • Uzamčení prostředků snižuje riziko razítka mezipaměti a hřmění herdy.

    Při odvolání často používané položky mezipaměti dochází k razítku mezipaměti a příliš mnoho požadavků se pokusí znovu vyplnit stejnou položku mezipaměti ve stejnou dobu. Hřmění herd je podobné: nárůst 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í na naplnění první žádosti o naplnění mezipaměti. Ukládání odpovědí do mezipaměti nemá funkci uzamčení 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á rutina značky mezipaměti

Obsah můžete ukládat do mezipaměti ze zobrazení MVC nebo Razor stránky pomocí pomocné rutiny značek mezipaměti. Pomocná rutina značek mezipaměti používá ukládání dat do mezipaměti.

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

Pomocná rutina 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 naleznete v nápovědě značky distribuované mezipaměti v ASP.NET Core.

Ukládání do mezipaměti v paměti

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. Spřažení relace znamená, že požadavky z 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íží se spřažením relací brány Aplikace Azure lication.

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řemísní některé mezery v IDistributedCache rozhraních API a IMemoryCache rozhraníCH 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 nahradil stávající IDistributedCache a použití, IMemoryCache a poskytuje jednoduché rozhraní API pro přidání nového kódu 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 s razítkem

    Při odvolání často používané položky mezipaměti dochází k razítku mezipaměti a příliš mnoho požadavků se pokusí znovu vyplnit stejnou položku mezipaměti ve stejnou dobu. 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 s podporou typově specifických a generalizovaných serializátorů prostřednictvím WithSerializer metod a WithSerializerFactory metod zřetězených AddHybridCache z volání. Ve výchozím nastavení služba zpracovává string a byte[] interně a používá System.Text.Json se 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, abyste se dostali správně pokaždé, včetně věcí, jako je serializace. A ve scénáři "miss mezipaměti" můžete skončit s několika souběžnými vlákny, všechny získání chybějící mezipaměti, všechny načítání podkladových dat, všechny serializace a všechny odesílání dat do mezipaměti.

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 razítka a další funkce, které IDistributedCache ne.

Kompatibilita

Knihovna HybridCache podporuje starší moduly runtime .NET až .NET Framework 4.7.2 a .NET Standard 2.0.

Další materiály

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

Pomocná rutina značky mezipaměti

Obsah můžete ukládat do mezipaměti ze zobrazení MVC nebo Razor stránky pomocí pomocné rutiny značek mezipaměti. Pomocná rutina značek mezipaměti používá ukládání dat do mezipaměti.

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

Pomocná rutina 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 naleznete v nápovědě značky distribuované mezipaměti 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 na základě hlaviček mezipaměti HTTP. 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 Razor jsou stránky, obvykle nejsou užitečné, protože prohlížeče obvykle nastavují hlavičky požadavků, které brání ukládání do mezipaměti. Ukládání výstupu do mezipaměti, které je dostupné v ASP.NET Core 7.0 a 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 vám ponechá několik možností zneplatnění položek mezipaměti.

  • Uzamčení prostředků snižuje riziko razítka mezipaměti a hřmění herdy.

    Při odvolání často používané položky mezipaměti dochází k razítku mezipaměti a příliš mnoho požadavků se pokusí znovu vyplnit stejnou položku mezipaměti ve stejnou dobu. Hřmění herd je podobné: nárůst 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í na naplnění první žádosti o naplnění mezipaměti. Ukládání odpovědí do mezipaměti nemá funkci uzamčení 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.

Ukládání do mezipaměti v paměti

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. Spřažení relace znamená, že požadavky z 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íží se spřažením relací brány Aplikace Azure lication.

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řemísní některé mezery v IDistributedCache rozhraních API a IMemoryCache rozhraníCH 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 nahradil stávající IDistributedCache a použití, IMemoryCache a poskytuje jednoduché rozhraní API pro přidání nového kódu 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 s razítkem

    Při odvolání často používané položky mezipaměti dochází k razítku mezipaměti a příliš mnoho požadavků se pokusí znovu vyplnit stejnou položku mezipaměti ve stejnou dobu. 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 s podporou typově specifických a generalizovaných serializátorů prostřednictvím WithSerializer metod a WithSerializerFactory metod zřetězených AddHybridCache z volání. Ve výchozím nastavení služba zpracovává string a byte[] interně a používá System.Text.Json se 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, abyste se dostali správně pokaždé, včetně věcí, jako je serializace. A ve scénáři "miss mezipaměti" můžete skončit s několika souběžnými vlákny, všechny získání chybějící mezipaměti, všechny načítání podkladových dat, všechny serializace a všechny odesílání dat do mezipaměti.

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 razítka a další funkce, které IDistributedCache ne.

Kompatibilita

Knihovna HybridCache podporuje starší moduly runtime .NET až .NET Framework 4.7.2 a .NET Standard 2.0.

Další materiály

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

Pomocná rutina značky mezipaměti

Obsah můžete ukládat do mezipaměti ze zobrazení MVC nebo Razor stránky pomocí pomocné rutiny značek mezipaměti. Pomocná rutina značek mezipaměti používá ukládání dat do mezipaměti.

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

Pomocná rutina 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 naleznete v nápovědě značky distribuované mezipaměti 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 na základě hlaviček mezipaměti HTTP. 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 Razor jsou stránky, obvykle nejsou užitečné, protože prohlížeče obvykle nastavují hlavičky požadavků, které brání ukládání do mezipaměti. Ukládání výstupu do mezipaměti, které je dostupné v ASP.NET Core 7.0 a 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 dostupné v .NET 7 a novějších verzích.