Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Notitie
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 10-versie van dit artikel voor de huidige release.
Waarschuwing
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 10-versie van dit artikel voor de huidige release.
Door Rick Anderson en Tom Dykstra
Dit artikel bevat een overzicht van caching in ASP.NET Core met een inleiding tot in-memory, gedistribueerde, hybride, respons- en uitvoercache.
Caching in het geheugen
In-memory caching maakt gebruik van servergeheugen voor het opslaan van gegevens in de cache. Dit type caching is geschikt voor één server of meerdere servers die gebruikmaken van sessieaffiniteit. Sessieaffiniteit wordt ook wel sticky sessionsgenoemd. Sessieaffiniteit betekent dat de aanvragen van een client altijd worden gerouteerd naar dezelfde server voor verwerking.
Zie Cache in het geheugen in ASP.NET Core en Problemen met sessieaffiniteit met Azure Application Gateway oplossenvoor meer informatie.
Gedistribueerde cache
Gebruik een gedistribueerde cache om gegevens op te slaan wanneer de app wordt gehost in een cloud- of serverfarm. De cache wordt gedeeld op de servers die aanvragen verwerken. Een client kan een aanvraag indienen die wordt verwerkt door elke server in de groep wanneer gegevens in de cache voor de client beschikbaar zijn. ASP.NET Core werkt met gedistribueerde caches van SQL Server, Redis, Postgres en NCache .
Voor meer informatie, zie gedistribueerde caching in ASP.NET Core.
HybridCache
De HybridCache API overbrugt hiaten in de IDistributedCache- en IMemoryCache-API's.
HybridCache is een abstracte klasse met een standaard implementatie die de meeste aspecten van het opslaan in de cache afhandelt en uit de cache opzoekt.
Functies van HybridCache
HybridCache biedt de volgende functies die niet beschikbaar zijn voor andere API's:
Een geïntegreerde API voor zowel in-process als out-of-process caching.
HybridCacheis ontworpen als vervanging voor bestaandeIDistributedCacheenIMemoryCachegebruik, en biedt een eenvoudige API voor het toevoegen van nieuwe cachecode. Als de app eenIDistributedCache-implementatie heeft, gebruikt deHybridCache-service deze voor secundaire caching. Met deze cachestrategie op twee niveaus kanHybridCachede snelheid van een in-memory cache en de duurzaamheid van een gedistribueerde of permanente cache bieden.Stampede-beveiliging.
Cache stampede gebeurt wanneer een veelgebruikte cachevermelding wordt ingetrokken en te veel aanvragen proberen dezelfde cachevermelding op hetzelfde moment opnieuw te vullen.
HybridCachecombineert gelijktijdige bewerkingen, die ervoor zorgen dat alle aanvragen voor een bepaald antwoord wachten tot de eerste aanvraag de cache vult.Configureerbare serialisatie.
Serialisatie wordt geconfigureerd als onderdeel van het registreren van de service, met ondersteuning voor typespecifieke en gegeneraliseerde serializers via de methoden
WithSerializerenWithSerializerFactory, gekoppeld aan deAddHybridCache-aanroep. De service verwerkt en typtstringstandaard intern enbyte[]gebruikt deSystem.Text.Jsonnaamruimte voor alles anders.HybridCachekan worden geconfigureerd voor andere soorten serializers, zoals protobuf of XML.
Als u de relatieve eenvoud van de HybridCache-API wilt zien, vergelijkt u code die deze gebruikt met code die gebruikmaakt van IDistributedCache. Hier volgt een voorbeeld van hoe het gebruik van IDistributedCache eruitziet:
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)
{ /* ... */ }
}
De code laat zien dat er elke keer veel moeite moet worden gedaan om het goed te krijgen, inclusief aspecten zoals serialisatie. Ook in het scenario "cache miss" kunt u te maken krijgen met meerdere gelijktijdige threads. Deze threads kunnen allemaal een cache miss ondervinden, allemaal de onderliggende gegevens ophalen, allemaal serialiseren en allemaal de gegevens naar de cache verzenden.
Hier volgt een equivalente code die gebruikmaakt van de HybridCache API:
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
);
}
}
De code is eenvoudiger en de bibliotheek biedt stampede-beveiliging en andere functies die niet beschikbaar zijn voor de IDistributedCache interface.
Compatibiliteit
De bibliotheek HybridCache ondersteunt oudere runtimes van .NET, waaronder .NET Framework 4.7.2 en .NET Standard 2.0.
Meer informatie
Zie de volgende bronnen voor meer informatie:
- HybridCache-bibliotheek in ASP.NET Core
- Voorstel voor deHybrid Cache-API (GitHub dotnet/aspnetcore-probleem #54647)
- HybridCache-broncode
Antwoordcaching
De middleware voor het cachen van serverantwoorden op basis van HTTP-Cache-Control headers.
Cachinggedrag implementeert standaard semantiek voor HTTP-caching.
Caching is gebaseerd op HTTP-cacheheaders die vergelijkbaar zijn met de methode die wordt gebruikt door proxy's.
Deze vorm van caching is handig voor openbare GET- of HEAD-API-aanvragen van clients waar aan de voorwaarden voor caching wordt voldaan.
Voor UI-apps zoals Razor Pagina's is het opslaan van reacties in de cache doorgaans niet nuttig. Browsers stellen vaak aanvraagheaders in die caching voorkomen.
Output caching (beschikbaar in .NET 7 en hoger) is een betere benadering voor UI-apps. In dit scenario bepaalt de configuratie wat er moet worden opgeslagen in de cache, onafhankelijk van HTTP-headers.
Gebruik Fiddler of een ander hulpprogramma waarmee aanvraagheaders expliciet kunnen worden ingesteld om de reactiecaching te testen. Het expliciet instellen van headers heeft de voorkeur voor het testen van caching. Zie Problemen met middleware > voor antwoordcaching oplossen voor meer informatie.
Zie Antwoordcaching in ASP.NET Corevoor meer informatie.
Uitvoercache
De middleware voor het opslaan van uitvoercache maakt caching van HTTP-antwoorden mogelijk. Uitvoercaching verschilt van antwoordcaching op de volgende manieren:
Cachinggedrag kan worden geconfigureerd op de server.
Gedrag van reactiecaching wordt gedefinieerd met HTTP-headers. Wanneer u bijvoorbeeld door een website bladert met Chrome of Microsoft Edge, verzendt de browser automatisch een
Cache-control: max-age=0koptekst. Deze header schakelt het opslaan van reacties effectief uit omdat de server de aanwijzingen van de client volgt. Er wordt een nieuw antwoord geretourneerd voor elke aanvraag, zelfs als de server een nieuw antwoord in de cache heeft. Bij het cachen van uitvoer overschrijft de client het cachegedrag dat u op de server configureert niet.Het opslagmedium voor de cache is uitbreidbaar.
Geheugen wordt standaard gebruikt. Het opslaan van antwoorden in cache is beperkt tot het geheugen.
U kunt geselecteerde cachevermeldingen programmatisch ongeldig maken.
Het opslaan van antwoorden in cache is afhankelijk van HTTP-headers, waardoor u weinig opties hebt voor het ongeldig maken van cachevermeldingen.
Het vergrendelen van resources vermindert het risico van een cache stampede en thundering herd-probleem.
Cache stampede gebeurt wanneer een veelgebruikte cachevermelding wordt ingetrokken en te veel aanvragen proberen dezelfde cachevermelding op hetzelfde moment opnieuw te vullen. Thundering herd is vergelijkbaar: een toestroom van aanvragen voor hetzelfde antwoord dat zich nog niet in een cache-item bevindt. Resourcevergrendeling zorgt ervoor dat alle aanvragen voor een bepaald antwoord wachten totdat de eerste aanvraag de cache vult. Het opslaan van antwoorden in cache heeft geen functie voor het vergrendelen van resources.
De cachevalidatie minimaliseert het bandbreedtegebruik.
Cachevalidatie betekent dat de server een HTTP-statuscode van 304 niet gewijzigd kan retourneren in plaats van een hoofdtekst van het antwoord in de cache. Deze statuscode informeert de client dat het antwoord op de aanvraag ongewijzigd blijft ten opzichte van wat eerder is ontvangen. In cacheopslag van antwoorden wordt geen cachevalidatie uitgevoerd.
Zie middleware voor uitvoercache in ASP.NET Corevoor meer informatie.
Cache Tag Helper
Cache de inhoud uit een MVC-weergave of Razor-pagina met de Cache Tag Helper. De Cache Tag Helper maakt gebruik van in-memory caching om gegevens op te slaan.
Zie Cache Tag Helper in ASP.NET Core MVC-voor meer informatie.
Gedistribueerde Cache Taghulp
Cache de inhoud van een MVC-weergave of Razor-pagina in gedistribueerde cloud- of webfarmomgevingen met de Distributed Cache Tag Helper. De Helper voor gedistribueerde cachetags maakt gebruik van SQL Server, Redisof NCache- voor het opslaan van gegevens.
Zie Helper voor gedistribueerde cachetags in ASP.NET Corevoor meer informatie.
Caching in het geheugen
In-memory caching maakt gebruik van servergeheugen voor het opslaan van gegevens in de cache. Dit type caching is geschikt voor één server of meerdere servers met behulp van sessieaffiniteit. Sessieaffiniteit wordt ook wel sticky sessionsgenoemd. Sessieaffiniteit betekent dat de aanvragen van een client altijd worden gerouteerd naar dezelfde server voor verwerking.
Zie Cache in het geheugen in ASP.NET Core en Problemen met sessieaffiniteit met Azure Application Gateway oplossenvoor meer informatie.
Gedistribueerde cache
Gebruik een gedistribueerde cache om gegevens op te slaan wanneer de app wordt gehost in een cloud- of serverfarm. De cache wordt gedeeld op de servers die aanvragen verwerken. Een client kan een aanvraag indienen die wordt verwerkt door een server in de groep als gegevens in de cache voor de client beschikbaar zijn. ASP.NET Core werkt met gedistribueerde caches van SQL Server, Redis, Postgres en NCache .
Voor meer informatie, zie gedistribueerde caching in ASP.NET Core.
HybridCache
De HybridCache API overbrugt hiaten in de IDistributedCache- en IMemoryCache-API's.
HybridCache is een abstracte klasse met een standaard implementatie die de meeste aspecten van het opslaan in de cache afhandelt en uit de cache opzoekt.
Functies van HybridCache
HybridCache biedt de volgende functies die niet beschikbaar zijn voor andere API's:
Een geïntegreerde API voor zowel in-process als out-of-process caching.
HybridCacheis ontworpen als vervanging voor bestaandeIDistributedCacheenIMemoryCachegebruik, en biedt een eenvoudige API voor het toevoegen van nieuwe cachecode. Als de app eenIDistributedCache-implementatie heeft, gebruikt deHybridCache-service deze voor secundaire caching. Met deze cachestrategie op twee niveaus kanHybridCachede snelheid van een in-memory cache en de duurzaamheid van een gedistribueerde of permanente cache bieden.Stampede-beveiliging.
Cache stampede gebeurt wanneer een veelgebruikte cachevermelding wordt ingetrokken en te veel aanvragen proberen dezelfde cachevermelding op hetzelfde moment opnieuw te vullen.
HybridCachecombineert gelijktijdige bewerkingen, die ervoor zorgen dat alle aanvragen voor een bepaald antwoord wachten tot de eerste aanvraag de cache vult.Configureerbare serialisatie.
Serialisatie wordt geconfigureerd als onderdeel van het registreren van de service, met ondersteuning voor typespecifieke en gegeneraliseerde serializers via de methoden
WithSerializerenWithSerializerFactory, gekoppeld aan deAddHybridCache-aanroep. De service verwerkt en typtstringstandaard intern enbyte[]gebruikt deSystem.Text.Jsonnaamruimte voor alles anders.HybridCachekan worden geconfigureerd voor andere soorten serializers, zoals protobuf of XML.
Als u de relatieve eenvoud van de HybridCache-API wilt zien, vergelijkt u code die deze gebruikt met code die gebruikmaakt van IDistributedCache. Hier volgt een voorbeeld van hoe het gebruik van IDistributedCache eruitziet:
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)
{ /* ... */ }
}
De code laat zien dat er elke keer veel moeite moet worden gedaan om het goed te krijgen, inclusief aspecten zoals serialisatie. Ook in het scenario "cache miss" kunt u te maken krijgen met meerdere gelijktijdige threads. Deze threads kunnen allemaal een cache miss ondervinden, allemaal de onderliggende gegevens ophalen, allemaal serialiseren en allemaal de gegevens naar de cache verzenden.
Hier volgt een equivalente code die gebruikmaakt van de HybridCache API:
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
);
}
}
De code is eenvoudiger en de bibliotheek biedt stampede-beveiliging en andere functies die niet beschikbaar zijn voor de IDistributedCache interface.
Compatibiliteit
De bibliotheek HybridCache ondersteunt oudere runtimes van .NET, waaronder .NET Framework 4.7.2 en .NET Standard 2.0.
Meer informatie
Zie de volgende bronnen voor meer informatie:
- HybridCache-bibliotheek in ASP.NET Core
- Voorstel voor deHybrid Cache-API (GitHub dotnet/aspnetcore-probleem #54647)
- HybridCache-broncode
Cache Tag Helper
Cache de inhoud uit een MVC-weergave of Razor-pagina met de Cache Tag Helper. De Cache Tag Helper maakt gebruik van in-memory caching om gegevens op te slaan.
Zie Cache Tag Helper in ASP.NET Core MVC-voor meer informatie.
Gedistribueerde Cache Taghulp
Cache de inhoud van een MVC-weergave of Razor-pagina in gedistribueerde cloud- of webfarmomgevingen met de Distributed Cache Tag Helper. De Helper voor gedistribueerde cachetags maakt gebruik van SQL Server, Redisof NCache- voor het opslaan van gegevens.
Zie Helper voor gedistribueerde cachetags in ASP.NET Corevoor meer informatie.
Antwoordcaching
De middleware voor het cachen van serverantwoorden op basis van HTTP-Cache-Control headers.
Cachinggedrag implementeert standaard semantiek voor HTTP-caching.
Caching is gebaseerd op HTTP-cacheheaders die vergelijkbaar zijn met de methode die wordt gebruikt door proxy's.
Deze vorm van caching is handig voor openbare GET- of HEAD-API-aanvragen van clients waar aan de voorwaarden voor caching wordt voldaan.
Voor UI-apps zoals Razor Pagina's is het opslaan van reacties in de cache doorgaans niet nuttig. Browsers stellen vaak aanvraagheaders in die caching voorkomen.
Output caching (beschikbaar in .NET 7 en hoger) is een betere benadering voor UI-apps. In dit scenario bepaalt de configuratie wat er moet worden opgeslagen in de cache, onafhankelijk van HTTP-headers.
Gebruik Fiddler of een ander hulpprogramma waarmee aanvraagheaders expliciet kunnen worden ingesteld om de reactiecaching te testen. Het expliciet instellen van headers heeft de voorkeur voor het testen van caching. Zie Problemen met middleware > voor antwoordcaching oplossen voor meer informatie.
Uitvoercache
De middleware voor het opslaan van uitvoercache maakt caching van HTTP-antwoorden mogelijk. Uitvoercaching verschilt van antwoordcaching op de volgende manieren:
Het cachegedrag kan worden geconfigureerd op de server.
Gedrag van reactiecaching wordt gedefinieerd door HTTP-headers. Wanneer u bijvoorbeeld een website bezoekt met Chrome of Edge, verzendt de browser automatisch een
Cache-control: max-age=0koptekst. Met deze header wordt het opslaan van reacties in de cache uitgeschakeld, omdat de server de aanwijzingen volgt die door de client worden geleverd. Er wordt een nieuw antwoord geretourneerd voor elke aanvraag, zelfs als de server een nieuw antwoord in de cache heeft. Bij uitvoercache overschrijft de client niet het cachegedrag dat u op de server configureert.Het opslagmedium voor de cache is uitbreidbaar.
Geheugen wordt standaard gebruikt. Het opslaan van antwoorden in cache is beperkt tot het geheugen.
U kunt geselecteerde cachevermeldingen programmatisch ongeldig maken.
Response caching's afhankelijkheid van HTTP-headers biedt u weinig opties om cachevermeldingen ongeldig te maken.
Het vergrendelen van resources vermindert het risico van een cache stampede en thundering herd-probleem.
Cache stampede gebeurt wanneer een veelgebruikte cachevermelding wordt ingetrokken en te veel aanvragen proberen dezelfde cachevermelding op hetzelfde moment opnieuw te vullen. Thundering herd is vergelijkbaar: een toestroom van aanvragen voor hetzelfde antwoord dat zich nog niet in een cache-item bevindt. Resourcevergrendeling zorgt ervoor dat alle aanvragen voor een bepaald antwoord wachten totdat de eerste aanvraag de cache vult. Het opslaan van antwoorden in cache heeft geen functie voor het vergrendelen van resources.
De cachevalidatie minimaliseert het bandbreedtegebruik.
Cache-hervalidatie betekent dat de server een
304 Not ModifiedHTTP-statuscode kan retourneren in plaats van een hoofdtekst van het antwoord in de cache. Deze statuscode informeert de client dat het antwoord op de aanvraag ongewijzigd blijft ten opzichte van wat eerder is ontvangen. In cacheopslag van antwoorden wordt geen cachevalidatie uitgevoerd.
Caching in het geheugen
In-memory caching maakt gebruik van servergeheugen voor het opslaan van gegevens in de cache. Dit type caching is geschikt voor één server of meerdere servers met behulp van sessieaffiniteit. Sessieaffiniteit wordt ook wel sticky sessionsgenoemd. Sessieaffiniteit betekent dat de aanvragen van een client altijd worden gerouteerd naar dezelfde server voor verwerking.
Zie Cache in het geheugen in ASP.NET Core en Problemen met sessieaffiniteit met Azure Application Gateway oplossenvoor meer informatie.
Gedistribueerde cache
Gebruik een gedistribueerde cache om gegevens op te slaan wanneer de app wordt gehost in een cloud- of serverfarm. De cache wordt gedeeld op de servers die aanvragen verwerken. Een client kan een aanvraag indienen die wordt verwerkt door een server in de groep als gegevens in de cache voor de client beschikbaar zijn. ASP.NET Core werkt met gedistribueerde caches van SQL Server, Redis, Postgres en NCache .
Voor meer informatie, zie gedistribueerde caching in ASP.NET Core.
HybridCache
De HybridCache API overbrugt hiaten in de IDistributedCache- en IMemoryCache-API's.
HybridCache is een abstracte klasse met een standaard implementatie die de meeste aspecten van het opslaan in de cache afhandelt en uit de cache opzoekt.
Functies van HybridCache
HybridCache biedt de volgende functies die niet beschikbaar zijn voor andere API's:
Een geïntegreerde API voor zowel in-process als out-of-process caching.
HybridCacheis ontworpen als vervanging voor bestaandeIDistributedCacheenIMemoryCachegebruik, en biedt een eenvoudige API voor het toevoegen van nieuwe cachecode. Als de app eenIDistributedCache-implementatie heeft, gebruikt deHybridCache-service deze voor secundaire caching. Met deze cachestrategie op twee niveaus kanHybridCachede snelheid van een in-memory cache en de duurzaamheid van een gedistribueerde of permanente cache bieden.Stampede-beveiliging.
Cache stampede gebeurt wanneer een veelgebruikte cachevermelding wordt ingetrokken en te veel aanvragen proberen dezelfde cachevermelding op hetzelfde moment opnieuw te vullen.
HybridCachecombineert gelijktijdige bewerkingen, die ervoor zorgen dat alle aanvragen voor een bepaald antwoord wachten tot de eerste aanvraag de cache vult.Configureerbare serialisatie.
Serialisatie wordt geconfigureerd als onderdeel van het registreren van de service, met ondersteuning voor typespecifieke en gegeneraliseerde serializers via de methoden
WithSerializerenWithSerializerFactory, gekoppeld aan deAddHybridCache-aanroep. De service verwerkt en typtstringstandaard intern enbyte[]gebruikt deSystem.Text.Jsonnaamruimte voor alles anders.HybridCachekan worden geconfigureerd voor andere soorten serializers, zoals protobuf of XML.
Als u de relatieve eenvoud van de HybridCache-API wilt zien, vergelijkt u code die deze gebruikt met code die gebruikmaakt van IDistributedCache. Hier volgt een voorbeeld van hoe het gebruik van IDistributedCache eruitziet:
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)
{ /* ... */ }
}
De code laat zien dat er elke keer veel moeite moet worden gedaan om het goed te krijgen, inclusief aspecten zoals serialisatie. Ook in het scenario "cache miss" kunt u te maken krijgen met meerdere gelijktijdige threads. Deze threads kunnen allemaal een cache miss ondervinden, allemaal de onderliggende gegevens ophalen, allemaal serialiseren en allemaal de gegevens naar de cache verzenden.
Hier volgt een equivalente code die gebruikmaakt van de HybridCache API:
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
);
}
}
De code is eenvoudiger en de bibliotheek biedt stampede-beveiliging en andere functies die niet beschikbaar zijn voor de IDistributedCache interface.
Compatibiliteit
De bibliotheek HybridCache ondersteunt oudere runtimes van .NET, waaronder .NET Framework 4.7.2 en .NET Standard 2.0.
Meer informatie
Zie de volgende bronnen voor meer informatie:
- HybridCache-bibliotheek in ASP.NET Core
- Voorstel voor deHybrid Cache-API (GitHub dotnet/aspnetcore-probleem #54647)
- HybridCache-broncode
Cache Tag Helper
Cache de inhoud uit een MVC-weergave of Razor-pagina met de Cache Tag Helper. De Cache Tag Helper maakt gebruik van in-memory caching om gegevens op te slaan.
Zie Cache Tag Helper in ASP.NET Core MVC-voor meer informatie.
Gedistribueerde Cache Taghulp
Cache de inhoud van een MVC-weergave of Razor-pagina in gedistribueerde cloud- of webfarmomgevingen met de Distributed Cache Tag Helper. De Helper voor gedistribueerde cachetags maakt gebruik van SQL Server, Redisof NCache- voor het opslaan van gegevens.
Zie Helper voor gedistribueerde cachetags in ASP.NET Corevoor meer informatie.
Antwoordcaching
De middleware voor het cachen van serverantwoorden op basis van HTTP-Cache-Control headers.
Cachinggedrag implementeert standaard semantiek voor HTTP-caching.
Caching is gebaseerd op HTTP-cacheheaders die vergelijkbaar zijn met de methode die wordt gebruikt door proxy's.
Deze vorm van caching is handig voor openbare GET- of HEAD-API-aanvragen van clients waar aan de voorwaarden voor caching wordt voldaan.
Voor UI-apps zoals Razor Pagina's is het opslaan van reacties in de cache doorgaans niet nuttig. Browsers stellen vaak aanvraagheaders in die caching voorkomen.
Output caching (beschikbaar in .NET 7 en hoger) is een betere benadering voor UI-apps. In dit scenario bepaalt de configuratie wat er moet worden opgeslagen in de cache, onafhankelijk van HTTP-headers.
Gebruik Fiddler of een ander hulpprogramma waarmee aanvraagheaders expliciet kunnen worden ingesteld om de reactiecaching te testen. Het expliciet instellen van headers heeft de voorkeur voor het testen van caching. Zie Problemen met middleware > voor antwoordcaching oplossen voor meer informatie.
Uitvoercache
Uitvoercache is beschikbaar in .NET 7 of hoger.