C# Academy · Lektion

Grundlæggende outputcaching

Cache svar for at reducere arbejdet.

Lektion 3 af 413 trin

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 cache

Resultatcache 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 headers

AddOutputCache

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/auth

Variation 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 + UseOutputCache aktiverer cachelagring på serversiden.
  • CacheOutput / [OutputCache] tilvælger endpoints; Expire angiver varigheden.
  • Kun GET/HEAD-svar med status 200 uden godkendelse eller cookies cachelagres som standard.
  • SetVaryByQuery og SetVaryByHeader bestemmer cache-nøglen.

Næste emne: cachepolitikker og ugyldiggørelse.

Gratis at komme i gang

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

  1. Algoritmer til hastighedsbegrænsning
  2. Konfiguration af middleware til hastighedsbegrænsning
  3. Grundlæggende outputcaching
  4. Cachepolitikker og ugyldiggørelse
← Tilbage til C# Academy