Architecture
Le cache
Le code le plus "vert" est celui qui ne s'exécute pas. La mise en cache est le levier le plus puissant pour réduire la charge serveur et la consommation énergétique globale.
Les niveaux de cache
1. Cache navigateur
C'est le cache stocké directement sur le device de l'utilisateur.
- Impact : Élimine totalement la requête réseau.
- Technique : Headers HTTP
Cache-Control.max-age=31536000, immutablepour les assets versionnés (images, JS, CSS).stale-while-revalidatepour le contenu dynamique qui tolère un léger délai.
2. CDN & Edge Caching
Le contenu est servi depuis un serveur proche géographiquement.
- Impact : Réduit la distance parcourue par les données (latence réseau) et protège le serveur d'origine.
- Concepts Clés :
- CDN (Content Delivery Network) : Idéal pour stocker et livrer des fichiers statiques (images, CSS, JS).
- Edge Computing : Exécuter du code (logique) directement sur le CDN (ex: authentification, A/B testing, resizing d'image) pour éviter d'appeler le backend.
Comparatif : CDN vs Edge Computing
| Aspect | CDN | Edge Computing |
|---|---|---|
| Objectif Principal | Accélérer la livraison de contenu (caching). | Traiter la donnée à la source (processing). |
| Architecture | Serveurs de stockage distribués. | Puissance de calcul distribuée. |
| Cas d'usage | Assets statiques, Streaming Vidéo. | IoT, Véhicules autonomes, IA locale. |
| Données | Copie et distribue. | Traite, filtre et analyse. |
| Latence | Réduite pour le téléchargement. | Réduite pour la prise de décision. |
| Sécurité | Protection DDoS, WAF. | Traitement local (données sensibles). |
| Coût | Bande passante & Stockage. | Temps de calcul (CPU/RAM). |
3. Reverse Proxy (Varnish/Nginx)
Situé juste devant votre serveur.
- Impact : "Absorbe" le trafic en servant les pages déjà générées.
- Scénario idéal : Pour 1 million de visites, votre serveur ne devrait générer la page qu'une seule fois. Tout le reste devrait être servi par le cache.
4. Cache Application & Base de Données (Redis/Memcached)
Stockage en mémoire (RAM) des résultats de requêtes coûteuses.
- Objectif : Éviter de recalculer ou de re-fetcher des données qui changent peu (ex: configuration, catalogue produit).
Cache status
Comprendre les headers de réponse est essentiel pour debugger.
- HIT (Succès) : Le contenu a été trouvé dans le cache et servi immédiatement. C'est le scénario idéal (rapide, pas de calcul serveur).
- MISS (Raté) : Le contenu n'était pas en cache. La requête a dû aller jusqu'au serveur d'origine pour être générée. Le cache stockera généralement cette réponse pour la prochaine fois.
- PASS (Passer) : Le cache a décidé de ne pas stocker cette réponse (ex: page avec des données personnelles/authentifiées, headers
no-store). La requête traverse le cache sans s'arrêter. - EXPIRED / STALE (Périmé) : Le contenu est en cache mais son temps de validité (
max-age) est dépassé. Le cache doit vérifier avec le serveur si le contenu a changé (revalidation).
Stale-While-Revalidate
Cette directive HTTP est particulièrement intéressante pour l'expérience utilisateur et la performance :
- Le navigateur sert immédiatement la version en cache (même si elle est un peu vieille/stale). -> Affichage instantané.
- En arrière-plan, il vérifie si une nouvelle version existe.
- Si oui, il met à jour le cache pour la prochaine visite.
Cache-Control: public, max-age=60, stale-while-revalidate=600