Cachepatronen en verloop
Pas cache-aside toe en stel vervaltijden in.
Cachepatronen en verloop is een gratis C# Academy-les op CoddyKit. Dit is les 3 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.
Cachepatronen
De manier waarop je een cache leest en beschrijft, is een patroon. Het meest voorkomende patroon in webapps is het cache-asidepatroon, waarbij je code de cache rond de gegevensbron beheert.
Het cache-asidepatroon
Cache-aside, oftewel laden op aanvraag, werkt in drie stappen: controleer de cache; laad bij een misser de gegevens uit de bron en vul de cache; retourneer de waarde. De cache wordt op aanvraag gevuld.
async Task<string> GetForecastAsync(string city)
{
string key = $"forecast:{city}";
string cached = await _cache.GetStringAsync(key);
if (cached is not null) return cached;
string fresh = await _api.LoadForecastAsync(city);
await _cache.SetStringAsync(key, fresh);
return fresh;
}Waarom vervaltijd essentieel is
Gegevens in de cache kunnen verouderd raken. Vervaltijd verwijdert vermeldingen automatisch na een bepaalde periode, zodat de volgende lezing actuele gegevens laadt. Zo houd je rekening met zowel prestaties als veroudering.
Absolute vervaltijd
Absolute vervaltijd verwijdert een vermelding op een vast tijdstip, ongeacht het gebruik. Gebruik dit wanneer gegevens slechts gedurende een bekend tijdvenster geldig zijn.
var options = new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
};Verschuivende vervaltijd
Verschuivende vervaltijd stelt de timer bij elke toegang opnieuw in. Een vermelding blijft bestaan zolang deze regelmatig wordt gebruikt, maar wordt verwijderd na een periode van inactiviteit. Dit is zeer geschikt voor sessieachtige gegevens.
var options = new DistributedCacheEntryOptions
{
SlidingExpiration = TimeSpan.FromMinutes(5)
};Beide combineren
Je kunt beide instellen: de verschuivende vervaltijd houdt vaak gebruikte gegevens beschikbaar, terwijl een absolute bovengrens garandeert dat de vermelding nooit langer dan een maximum blijft bestaan en uiteindelijk opnieuw wordt geladen.
var options = new DistributedCacheEntryOptions
{
SlidingExpiration = TimeSpan.FromMinutes(5),
AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(1)
};Opties toepassen bij het opslaan
Geef de opties als derde argument door aan SetStringAsync of SetAsync, zodat de vermelding haar eigen vervalbeleid bevat.
await _cache.SetStringAsync(key, fresh, options);Doorschrijven en ongeldig maken
Wanneer de brongegevens veranderen, verwijder of werk je de cache bij, zodat lezingen geen verouderde waarden opleveren. Bij cache-aside worden schrijfbewerkingen meestal gecombineerd met een aanroep van RemoveAsync voor de betreffende sleutel.
await _repository.UpdateForecastAsync(city, value);
await _cache.RemoveAsync($"forecast:{city}");Een cachestormloop voorkomen
Als een populaire sleutel verloopt, kunnen veel aanvragen deze tegelijk opnieuw laden, een cachestormloop. Beperk dit met korte vergrendelingen, enigszins willekeurige vervaltijden of verversing op de achtergrond, zodat slechts één aanvraag de vermelding opnieuw opbouwt.
Vervaltijden kiezen
Kies de duur op basis van hoe vaak de gegevens veranderen en hoeveel veroudering aanvaardbaar is. Referentiegegevens verdragen lange TTL’s; snel veranderende gegevens hebben korte TTL’s of ongeldigmaking op basis van gebeurtenissen nodig.
De kosten van een cachemisser
Elke cachemisser kost een lading van de bron, dus ontwerp sleutels en TTL’s om het trefferpercentage te maximaliseren. Houd de verhoudingen tussen treffers en missers in de gaten om je cache na verloop van tijd bij te stellen.
Korte controle
Test cachepatronen en vervaltijd.
Samenvatting
Het cache-asidepatroon controleert de cache, laadt gegevens bij een misser en vult de cache. Absolute vervaltijd verwijdert gegevens op een vast tijdstip; verschuivende vervaltijd stelt de timer bij toegang opnieuw in. Combineer beide met DistributedCacheEntryOptions. Maak gegevens bij schrijfbewerkingen ongeldig met RemoveAsync, voorkom cachestormlopen en stel TTL’s en sleutels af op toegangspatronen en aanvaardbare veroudering.
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 “Cachepatronen en verloop” gratis?
Ja — de volledige tekst van “Cachepatronen en verloop” 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 “Cachepatronen en verloop”?
Pas cache-aside toe en stel vervaltijden in. 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 3 van 4.
Hoe lang duurt de les “Cachepatronen en verloop”?
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
- IDistributedCache-abstractie
- Verbinding maken met Redis
- Cachepatronen en verloop
- Geserialiseerde objecten cachen