Stratégies de mise en cache
La requête la plus rapide est celle qui n'atteint jamais la base de données. Nous concevons le cache couche par couche et décidons pour chaque point de terminaison du niveau de fraîcheur requis.
Où une requête obtient sa réponse
Client
Azure Front Door (CDN)transmet
API · output cachetransmet
Azure Cache for Redistransmet
Azure SQLrépond
Exemple illustratif
Mise en cache HTTP
Exploiter la mise en cache navigateur et CDN avec les en-têtes HTTP :
Cache-Control: max-age=3600- Cache pendant 1 heureETag- Requêtes conditionnelles avecIf-None-MatchLast-Modified- Validation basée sur le temps- En-tête Vary pour mise en cache de négociation de contenu
Mise en cache côté serveur
- Cache mémoire : IMemoryCache pour API mono-instance
- Cache distribué : Redis pour déploiements multi-instances
- Output caching : Mettre en cache les réponses entières
- Data caching : Mettre en cache les résultats de requêtes base de données
Optimisation base de données
- Pool de connexions : Réutiliser les connexions base de données
- Requêtes async : Opérations base de données non bloquantes
- Projection : Sélectionner uniquement les colonnes requises
- Indexation : Créer des index sur colonnes fréquemment interrogées
- Prévention N+1 : Utiliser eager loading ou batching
- Réplicas de lecture : Échelonner les lectures avec réplicas de base de données
Compression et minification
- Compression de réponse : Middleware de compression Gzip ou Brotli
- Minification JSON : Supprimer les espaces des réponses JSON
- Optimisation d'images : Compresser et redimensionner les images à la volée
Mise à l'échelle horizontale
- Conception sans état : Stocker l'état de session externalement (Redis, Cosmos DB)
- Équilibrage de charge : Azure Load Balancer ou Application Gateway
- Auto-Scaling : Mise à l'échelle basée sur CPU, mémoire ou nombre de requêtes
- Orchestration de conteneurs : Azure Kubernetes Service (AKS) pour microservices