Grundlæggende outputcaching
Cache svar for at reducere arbejdet.
Grundlæggende outputcaching er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 4 lektioner i alt.
Hvad er caching af resultater?
Caching af resultater gemmer hele HTTP-svaret fra et slutpunkt, så gentagne forespørgsler leveres fra cachen uden at køre håndteringen igen. Det reducerer svartid og belastning markant for slutpunkter med mange læseforespørgsler.
// First call -> handler runs, response stored
// Next calls -> response served from cacheResultatcache kontra svarcache
Indbygget resultatcaching (tilføjet i .NET 7) gemmer svar på serveren, og du har fuld kontrol over det. Den ældre svarcaching udsender kun HTTP-cacheheadere og er afhængig af, at klienten eller proxyservere respekterer dem.
// Output caching: server-side store you control
// Response caching: just Cache-Control headersAddOutputCache
Registrér tjenesten med AddOutputCache.
builder.Services.AddOutputCache();UseOutputCache
Føj middlewarelaget til anmodningspipen med UseOutputCache. Placér det efter rutevalget og, hvis det findes, efter CORS.
var app = builder.Build();
app.UseOutputCache();
app.MapControllers();CacheOutput på et endpoint
Aktivér cachelagring for et endpoint med CacheOutput (minimal API) eller attributten [OutputCache] (controllere).
app.MapGet("/products", GetProducts)
.CacheOutput();
// Controller:
// [OutputCache]
// public IActionResult Get() => Ok(...);Angivelse af udløb
Styr, hvor længe et svar forbliver i cachen, med Expire.
app.MapGet("/products", GetProducts)
.CacheOutput(policy => policy.Expire(TimeSpan.FromSeconds(30)));Hvad der cachelagres
Som standard cachelagres kun GET- og HEAD-anmodninger med status 200, og kun når der hverken indgår Set-Cookie eller godkendelse – det er farligt ved en fejl at cachelagre godkendte, brugerspecifikke svar.
// Cached by default: GET/HEAD, 200, no cookies/authVariation efter forespørgselsstreng
To anmodninger til den samme sti med forskellige forespørgselsstrenge bør normalt cachelagres separat. Brug SetVaryByQuery.
app.MapGet("/search", Search)
.CacheOutput(policy => policy
.Expire(TimeSpan.FromSeconds(60))
.SetVaryByQuery("q", "page"));Variation efter header
Du kan variere cache-nøglen efter headere – f.eks. for at levere en anden cachelagret kopi for hver Accept-Language.
policy.SetVaryByHeader("Accept-Language");En grundpolitik for alt
AddBasePolicy anvender en standardindstilling på hvert endpoint, som de enkelte endpoints stadig kan tilsidesætte.
builder.Services.AddOutputCache(options =>
{
options.AddBasePolicy(policy =>
policy.Expire(TimeSpan.FromSeconds(10)));
});Deaktivering for et endpoint
Hvis en grundpolitik cachelagrer alt, kan du udelukke dynamiske endpoints med NoCache.
app.MapGet("/cart", GetCart)
.CacheOutput(policy => policy.NoCache());Hurtigt tjek
Bekræft forskellen mellem de to cachefunktioner.
Opsummering
Du har lært det grundlæggende om output-cachelagring:
AddOutputCache+UseOutputCacheaktiverer cachelagring på serversiden.CacheOutput/[OutputCache]tilvælger endpoints;Expireangiver varigheden.- Kun GET/HEAD-svar med status 200 uden godkendelse eller cookies cachelagres som standard.
SetVaryByQueryogSetVaryByHeaderbestemmer cache-nøglen.
Næste emne: cachepolitikker og ugyldiggørelse.
Lær C# med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 93
- Lektioner
- 346
Ofte stillede spørgsmål
Er lektionen “Grundlæggende outputcaching” gratis?
Ja — hele teksten til “Grundlæggende outputcaching” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Grundlæggende outputcaching”?
Cache svar for at reducere arbejdet. Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på C# Academy?
Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Grundlæggende outputcaching”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne C# Academy-lektion?
Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Algoritmer til hastighedsbegrænsning
- Konfiguration af middleware til hastighedsbegrænsning
- Grundlæggende outputcaching
- Cachepolitikker og ugyldiggørelse