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 ve verzi .NET 8 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
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 ve verzi .NET 8 tohoto článku.
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žňujeHybridCache
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 aWithSerializerFactory
metod zřetězenýchAddHybridCache
z volání. Ve výchozím nastavení služba zpracovávástring
abyte[]
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:
- Knihovna HybridCache v ASP.NET Core
- Problém s GitHubem dotnet/aspnetcore #54647
HybridCache
zdrojový kód
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žňujeHybridCache
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 aWithSerializerFactory
metod zřetězenýchAddHybridCache
z volání. Ve výchozím nastavení služba zpracovávástring
abyte[]
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:
- Knihovna HybridCache v ASP.NET Core
- Problém s GitHubem dotnet/aspnetcore #54647
HybridCache
zdrojový kód
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žňujeHybridCache
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 aWithSerializerFactory
metod zřetězenýchAddHybridCache
z volání. Ve výchozím nastavení služba zpracovávástring
abyte[]
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:
- Knihovna HybridCache v ASP.NET Core
- Problém s GitHubem dotnet/aspnetcore #54647
HybridCache
zdrojový kód
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.