Overzicht van caching in ASP.NET Core
Notitie
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor 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 9-versie van dit artikelvoor de huidige release.
Belangrijk
Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.
Zie de .NET 9-versie van dit artikelvoor de huidige release.
Door Rick Anderson en Tom Dykstra
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 SQL Server, Redisen NCache gedistribueerde caches.
Voor meer informatie, zie gedistribueerde caching in ASP.NET Core.
HybridCache
De HybridCache API overbrugt enkele 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
HybridCache
beschikt over de volgende functies die de andere API's niet hebben:
Een geïntegreerde API voor zowel in-process als out-of-process caching.
HybridCache
is ontworpen als vervanging voor bestaandeIDistributedCache
enIMemoryCache
gebruik, 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 kanHybridCache
de 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.
HybridCache
gelijktijdige bewerkingen combineert, zodat 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
WithSerializer
enWithSerializerFactory
, gekoppeld aan deAddHybridCache
-aanroep. De service verwerkt standaardstring
enbyte[]
intern en gebruiktSystem.Text.Json
voor alles. Het kan worden geconfigureerd voor andere soorten serialisatieprogramma's, 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)
{ /* ... */ }
}
Dat is veel werk om elke keer goed te komen, inclusief zaken als serialisatie. In het scenario van een "cache miss" kunt u uiteindelijk meerdere gelijktijdige threads krijgen, die allemaal een cache miss ondergaan, de onderliggende gegevens ophalen, deze serialiseren en die gegevens naar de cache verzenden.
Hier volgt een equivalente code met behulp van 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
);
}
}
De code is eenvoudiger en de bibliotheek biedt bescherming tegen overbelasting en andere functies die IDistributedCache
niet biedt.
Compatibiliteit
De HybridCache
-bibliotheek ondersteunt oudere .NET-runtimes, tot .NET Framework 4.7.2 en .NET Standard 2.0.
Aanvullende informatiebronnen
Zie de volgende bronnen voor meer informatie:
- HybridCache-bibliotheek in ASP.NET Core
-
voorstel voor hybride cache-API (
dotnet/aspnetcore
#54647) -
HybridCache
broncode
Antwoordcaching
Middleware voor het opslaan van antwoorden in cache:
- Hiermee kunt u serverreacties opslaan in cache op basis van HTTP-cacheheaders. Implementeert de standaard semantiek voor HTTP-caching. Caches op basis van HTTP-cacheheaders, zoals proxyservers dat doen.
- Is doorgaans niet nuttig voor UI-apps zoals Razor Pagina's, omdat browsers in het algemeen aanvraagheaders instellen die caching voorkomen. uitvoercache, die beschikbaar is in ASP.NET Core 7.0 en hoger, biedt gebruikersinterface-apps voordelen. Met uitvoercache bepaalt de configuratie wat onafhankelijk van HTTP-headers in de cache moet worden opgeslagen.
- Kan nuttig zijn voor openbare GET- of HEAD-API-aanvragen van clients waar aan de voorwaarden voor caching wordt voldaan.
Als u antwoordcaching wilt testen, gebruikt u Fiddler-of een ander hulpprogramma waarmee aanvraagheaders expliciet kunnen worden ingesteld. Het expliciet instellen van headers heeft de voorkeur voor het testen van caching. Zie Probleemoplossingvoor 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:
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=0
koptekst. 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 Modified
HTTP-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.
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.
Distributed Cache Tag Helper
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.
In-memory caching
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 plaksessiesgenoemd. 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 SQL Server, Redisen NCache gedistribueerde caches.
Voor meer informatie, zie Gedistribueerde cache in ASP.NET Core.
HybridCache
De HybridCache API overbrugt enkele 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
HybridCache
beschikt over de volgende functies die de andere API's niet hebben:
Een geïntegreerde API voor zowel in-process als out-of-process caching.
HybridCache
is ontworpen als vervanging voor bestaandeIDistributedCache
enIMemoryCache
gebruik, 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 kanHybridCache
de 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.
HybridCache
gelijktijdige bewerkingen combineert, zodat 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
WithSerializer
enWithSerializerFactory
, gekoppeld aan deAddHybridCache
-aanroep. De service verwerkt standaardstring
enbyte[]
intern en gebruiktSystem.Text.Json
voor alles. Het kan worden geconfigureerd voor andere soorten serialisatieprogramma's, 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)
{ /* ... */ }
}
Dat is veel werk om elke keer goed te komen, inclusief zaken als serialisatie. En in het geval van een 'cache miss' kunt u uiteindelijk meerdere gelijktijdige threads hebben, allemaal een cache miss krijgen, allemaal de onderliggende gegevens ophalen, allemaal serialiseren en allemaal die gegevens naar de cache verzenden.
Hier volgt een equivalente code met behulp van 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
);
}
}
De code is eenvoudiger en de bibliotheek biedt overbelastingsbeveiliging en andere functies die IDistributedCache
niet heeft.
Compatibiliteit
De HybridCache
-bibliotheek ondersteunt oudere .NET-runtimes, tot .NET Framework 4.7.2 en .NET Standard 2.0.
Aanvullende informatiebronnen
Zie de volgende bronnen voor meer informatie:
- HybridCache-bibliotheek in ASP.NET Core
-
voorstel voor hybride cache-API (
dotnet/aspnetcore
#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 Tag Helper
Cache de inhoud van een MVC-weergave of Razor-pagina in gedistribueerde cloud- of webfarmscenario's 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
Middleware voor het opslaan van antwoorden in cache:
- Hiermee kunt u serverreacties cachen op basis van HTTP-cacheheaders. Implementeert de standaard semantiek voor HTTP-caching. Caches die functioneren op basis van HTTP-cacheheaders, zoals proxy's dat doen.
- Is doorgaans niet nuttig voor UI-apps zoals Razor Pagina's, omdat browsers in het algemeen aanvraagheaders instellen die caching voorkomen. uitvoercache, die beschikbaar is in ASP.NET Core 7.0 en hoger, biedt gebruikersinterface-apps voordelen. Met uitvoercache bepaalt de configuratie wat onafhankelijk van HTTP-headers in de cache moet worden opgeslagen.
- Kan nuttig zijn voor openbare GET- of HEAD-API-aanvragen van clients waar aan de voorwaarden voor caching wordt voldaan.
Als u antwoordcaching wilt testen, gebruikt u Fiddler-of een ander hulpprogramma waarmee aanvraagheaders expliciet kunnen worden ingesteld. Het expliciet instellen van headers heeft de voorkeur voor het testen van caching. Zie Probleemoplossingvoor 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=0
koptekst. 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.
De afhankelijkheid van responscaching van HTTP-headers laat slechts enkele opties over voor het ongeldig maken van cache-items.
Het vergrendelen van resources vermindert het risico van cache-ineenstorting en het 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 golf van verzoeken voor dezelfde reactie die nog niet in een cache-item aanwezig is. 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 Modified
HTTP-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. Bij het cachen van antwoorden wordt geen hervalidatie van de cache 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 plaksessiesgenoemd. 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 SQL Server, Redisen NCache gedistribueerde caches.
Voor meer informatie, zie Gedistribueerde cache in ASP.NET Core.
HybridCache
De HybridCache API overbrugt enkele 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
HybridCache
beschikt over de volgende functies die de andere API's niet hebben:
Een geïntegreerde API voor zowel in-process als out-of-process caching.
HybridCache
is ontworpen als vervanging voor bestaandeIDistributedCache
enIMemoryCache
gebruik, 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 kanHybridCache
de snelheid van een in-memory cache en de duurzaamheid van een gedistribueerde of permanente cache bieden.Stampedebeveiliging.
Cache stampede gebeurt wanneer een veelgebruikte cachevermelding wordt ingetrokken en te veel aanvragen proberen dezelfde cachevermelding op hetzelfde moment opnieuw te vullen.
HybridCache
gelijktijdige bewerkingen combineert, zodat 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
WithSerializer
enWithSerializerFactory
, gekoppeld aan deAddHybridCache
-aanroep. De service verwerkt standaardstring
enbyte[]
intern en gebruiktSystem.Text.Json
voor alles. Het kan worden geconfigureerd voor andere soorten serialisatieprogramma's, 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)
{ /* ... */ }
}
Dat is veel werk om elke keer goed te komen, inclusief zaken als serialisatie. In het scenario van een 'cache miss' kunt u uiteindelijk meerdere gelijktijdige threads hebben, die allemaal een cache miss krijgen, de onderliggende gegevens ophalen, deze serialiseren en naar de cache sturen.
Hier volgt een equivalente code met behulp van 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
);
}
}
De code is eenvoudiger en de bibliotheek biedt stampede-beveiliging en andere functies die IDistributedCache
niet.
Compatibiliteit
De HybridCache
-bibliotheek ondersteunt oudere .NET-runtimes, tot .NET Framework 4.7.2 en .NET Standard 2.0.
Aanvullende informatiebronnen
Zie de volgende bronnen voor meer informatie:
- HybridCache-bibliotheek in ASP.NET Core
-
voorstel voor hybride cache-API (
dotnet/aspnetcore
#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-Tag Helper
Cache de inhoud van een MVC-view of Razor-pagina in scenario's voor een gedistribueerde cloud of webfarm 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
Middleware voor het opslaan van antwoorden in cache:
- Hiermee kunt u serverantwoorden cachen op basis van HTTP-cache-headers. Implementeert de standaard semantiek voor HTTP-caching. Caches die, net als proxy's, gebaseerd zijn op HTTP-cacheheaders.
- Is doorgaans niet nuttig voor UI-apps zoals Razor Pagina's, omdat browsers in het algemeen aanvraagheaders instellen die caching voorkomen. uitvoercache, die beschikbaar is in ASP.NET Core 7.0 en hoger, biedt gebruikersinterface-apps voordelen. Met uitvoercache bepaalt de configuratie wat onafhankelijk van HTTP-headers in de cache moet worden opgeslagen.
- Kan nuttig zijn voor openbare GET- of HEAD-API-aanvragen van clients waar aan de voorwaarden voor caching wordt voldaan.
Als u antwoordcaching wilt testen, gebruikt u Fiddler-of een ander hulpprogramma waarmee aanvraagheaders expliciet kunnen worden ingesteld. Het expliciet instellen van headers heeft de voorkeur voor het testen van caching. Zie Probleemoplossingvoor meer informatie.