Cachebeleid en invalidatie
Beheer de levensduur en tags van de cache.
Cachebeleid en invalidatie is een gratis C# Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C# Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C# Academy bevat in totaal 4 lessen.
Beleid met een naam
In plaats van cache-instellingen op elk endpoint te herhalen, definieer je herbruikbaar beleid met een naam één keer en verwijs je er op naam naar.
builder.Services.AddOutputCache(options =>
{
options.AddPolicy("Short", policy =>
policy.Expire(TimeSpan.FromSeconds(10)));
options.AddPolicy("Long", policy =>
policy.Expire(TimeSpan.FromMinutes(10)));
});Een benoemd beleid toepassen
Verwijs bij het cachen van een endpoint naar het beleid met zijn naam.
app.MapGet("/catalog", GetCatalog)
.CacheOutput("Long");Cachtags
Tags groeperen verwante gecachete items, zodat je ze samen ongeldig kunt maken. Voorzie een endpoint in zijn beleid van een tag met Tag.
app.MapGet("/products", GetProducts)
.CacheOutput(policy => policy
.Expire(TimeSpan.FromMinutes(5))
.Tag("products"));IOutputCacheStore
Het ongeldig maken verloopt via IOutputCacheStore. Injecteer dit en roep EvictByTagAsync aan om elk item met die tag uit de cache te verwijderen.
app.MapPost("/products", async (
Product p, AppDb db, IOutputCacheStore cache, CancellationToken ct) =>
{
db.Products.Add(p);
await db.SaveChangesAsync(ct);
await cache.EvictByTagAsync("products", ct);
return Results.Created($"/products/{p.Id}", p);
});Waarom je bij schrijfbewerkingen ongeldig moet maken
Een gecachete lijst is verouderd zodra de onderliggende gegevens veranderen. Door bij elke aanmaak-, bijwerk- of verwijderbewerking de relevante tag te verwijderen, blijven leesbewerkingen actueel zonder op het verlopen van de vervaltijd te wachten.
// After any mutation:
await cache.EvictByTagAsync("products", ct);Tags per object instellen
Stel tags gedetailleerder in, zodat je alleen de gecachete antwoorden van één item verwijdert en niet de hele verzameling.
app.MapGet("/products/{id}", GetProduct)
.CacheOutput(policy => policy.Tag("products"));
// Evict the single item's detail + the list together
await cache.EvictByTagAsync("products", ct);Variatie-instellingen in een beleid
Combineer vervaltijd, tags en variatieregels in één benoemd beleid voor een volledig cachecontract.
options.AddPolicy("ProductList", policy => policy
.Expire(TimeSpan.FromMinutes(5))
.Tag("products")
.SetVaryByQuery("page", "size"));Aangepaste variatiewaarde
Met VaryByValue kun je de cachesleutel baseren op willekeurige aanvraaggegevens, zoals een tenant-id die uit de aanvraag wordt bepaald.
policy.VaryByValue(context =>
new KeyValuePair<string, string>(
"tenant",
context.Request.Headers["X-Tenant"].ToString()));Verwijdering versus vervaltijd
Er zijn twee manieren waarop items de cache verlaten:
- Vervaltijd: gebaseerd op tijd en automatisch via
Expire. - Verwijdering: expliciet via
EvictByTagAsyncwanneer gegevens veranderen.
Gebruik beide: een korte vervaltijd als vangnet en verwijdering voor correctheid.
// belt-and-suspenders: Expire(5min) + EvictByTag on writeVergrendeling en bescherming tegen cachestormen
Uitvoercaching voegt gelijktijdige cachemissers standaard samen: wanneer veel aanvragen tegelijk een endpoint zonder cache bereiken, voert slechts één aanvraag de handler uit terwijl de andere wachten. Je kunt dit uitschakelen met SetLocking(false).
policy.SetLocking(false); // allow concurrent regenerationGedistribueerde uitvoercache
Standaard bevindt de opslag zich in het geheugen en is deze per instantie. Gebruik voor meerdere servers een gedistribueerde opslag, zoals Redis, zodat alle instanties dezelfde cache delen en ongeldig maken.
// Register a distributed IOutputCacheStore implementation
// (e.g. a Redis-backed package) so EvictByTag works cluster-wideKorte controle
Test je begrip van het ongeldig maken.
Samenvatting
Je hebt cachebeleid en het ongeldig maken geleerd:
- Definieer herbruikbaar beleid met een naam en pas het op naam toe.
- Tags groeperen items;
IOutputCacheStore.EvictByTagAsyncverwijdert ze bij schrijfbewerkingen. - Combineer vervaltijd (automatisch) met verwijdering (expliciet).
- Gebruik een gedistribueerde opslag voor implementaties met meerdere servers.
Daarmee is de cursus over snelheidsbegrenzing en caching voltooid.
Leer C# met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 93
- Lessen
- 346
Veelgestelde vragen
Is de les “Cachebeleid en invalidatie” gratis?
Ja — de volledige tekst van “Cachebeleid en invalidatie” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C# Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C# Academy bevat in totaal 4 lessen.
Wat leer ik in “Cachebeleid en invalidatie”?
Beheer de levensduur en tags van de cache. Je oefent met C# Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met C# Academy te beginnen?
Ervaring vooraf is niet nodig. C# Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Cachebeleid en invalidatie”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over C# Academy?
Ja. Elke les over C# Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Algoritmen voor rate limiting
- Rate-limitingmiddleware configureren
- Basis van outputcaching
- Cachebeleid en invalidatie