Cachingstrategieën
De snelste request is die welke de database nooit bereikt. We ontwerpen caching laag per laag en beslissen per endpoint hoe vers de data moet zijn.
Waar een request zijn antwoord krijgt
Client
Azure Front Door (CDN)geeft door
API · output cachegeeft door
Azure Cache for Redisgeeft door
Azure SQLantwoordt
Illustratief voorbeeld
HTTP-caching
Benut caching in de browser en het CDN met HTTP-headers:
Cache-Control: max-age=3600- Cache voor 1 uurETag- Conditionele requests metIf-None-MatchLast-Modified- Validatie op basis van tijd- Vary-header voor caching bij content negotiation
Caching aan de serverkant
- In-memory cache: IMemoryCache voor API's met één instantie
- Gedistribueerde cache: Redis voor deployments met meerdere instanties
- Output caching: Cache volledige responses
- Datacaching: Resultaten van databasequery's cachen
Databaseoptimalisatie
- Connection pooling: Databaseverbindingen hergebruiken
- Asynchrone queries: Niet-blokkerende databasebewerkingen
- Projectie: Selecteer alleen benodigde kolommen
- Indexering: Maak indexen op kolommen die vaak bevraagd worden
- N+1 voorkomen: Gebruik eager loading of batching
- Leesreplica's: Schaal leesbewerkingen met databasereplica's
Compressie en minificatie
- Compressie van responses: Middleware voor gzip- of Brotli-compressie
- JSON-minificatie: Witruimte uit JSON-responses verwijderen
- Afbeeldingsoptimalisatie: Afbeeldingen meteen comprimeren en herschalen
Horizontaal schalen
- Stateless ontwerp: Sessiestatus extern bewaren (Redis, Cosmos DB)
- Load balancing: Azure Load Balancer of Application Gateway
- Automatisch schalen: Uitschalen op basis van CPU, geheugen of aantal requests
- Containerorkestratie: Azure Kubernetes Service (AKS) voor microservices