Guides

Guide de performance

Purger le cache sans interruption : un processus d'invalidation plus sûr

Remplacez le réflexe de tout purger par un processus contrôlé qui maintient le service aux utilisateurs pendant la propagation des changements de contenu.

Lorsqu'un prix, une image de produit, une page de campagne ou un bundle JavaScript change, les utilisateurs doivent rapidement recevoir la bonne version. La réaction risquée consiste à vider l'intégralité du cache CDN et à espérer que l'origine puisse absorber le remplissage. Cela crée un événement de cache froid au moment même où une mise en production, une promotion ou un incident requiert déjà de l'attention.

Une invalidation sûre ne se résume pas à un bouton. C'est une séquence : publier un remplacement connu comme fonctionnel, invalider le plus petit ensemble concerné, vérifier depuis des emplacements représentatifs et conserver une version réversible disponible. Les règles ci-dessous s'appliquent à l'ensemble des produits CDN, y compris Cloudflare et Fastly, même si leurs tableaux de bord et API utilisent des noms différents.

Commencez par le contrat de cache

Avant d'utiliser un contrôle de purge, documentez ce que signifie chaque réponse et comment elle devient fraîche. La norme HTTP distingue une réponse fraîche, qui peut être réutilisée sans contacter l'origine, d'une réponse périmée qui nécessite une validation ou une politique explicite de diffusion de contenu périmé. Cache-Control, ETag, Last-Modified et Vary forment le contrat entre votre origine et les caches partagés. La RFC 9111 est la référence faisant autorité.

Classez d'abord l'objet :

  • Ressources immuables : les CSS, JavaScript, polices et images avec hash peuvent avoir de longues durées de vie en périphérie, car un nouveau nom de fichier représente une nouvelle version.
  • Contenu revalidé : les pages éditoriales et les données de catalogue peuvent utiliser une durée de vie modérée dans les caches partagés avec des validateurs tels que ETag.
  • Réponses sensibles ou personnalisées : les pages de compte, paniers, paiements et réponses contenant des données privées doivent normalement être privées ou non mises en cache.

Cette classification évite qu'une mise à jour de contenu devienne un incident de sécurité. Une purge ne remplace pas une bonne mise en cache, et no-cache signifie revalider avant réutilisation, pas nécessairement ne pas stocker.

La purge la plus sûre est celle dont vous n'avez pas besoin

Versionnez les ressources statiques dans l'URL, publiez la nouvelle version avant de modifier les références et réservez l'invalidation aux objets dont l'URL doit rester stable.

Un processus d'invalidation plus sûr

1. Identifiez l'ensemble complet des changements

Notez les URL canoniques, hôtes, dimensions de clé de cache et objets liés affectés par la mise en production. Une modification de produit peut toucher la page produit, les listes de catégories, les résultats de recherche, les recommandations, le sitemap et une famille d'images redimensionnées. Incluez les variantes de chaîne de requête et de langue si elles font partie de la clé de cache.

Ne vous fiez pas uniquement à l'adresse affichée dans le navigateur. Inspectez les en-têtes de réponse et la configuration CDN pour savoir si les cookies, signaux d'appareil, pays, Accept ou Accept-Language créent des variantes distinctes. Si la réponse est sélectionnée par Accept, l'origine doit exposer le comportement Vary approprié afin qu'un cache partagé ne serve pas de l'AVIF à un client incapable de le décoder.

2. Publiez le remplacement avant d'invalider

Rendez le nouvel objet disponible à l'origine et testez-le directement, de préférence via un nom d'hôte de préproduction ou une surcharge d'origine. Pour une mise en production, chargez d'abord les ressources, déployez l'application qui peut les référencer, puis basculez le HTML ou le manifeste vers la nouvelle version. Conservez la version précédente des ressources et de l'application jusqu'à la fin de la vérification.

Cet ordre évite qu'une purge n'expose un objet manquant. Il transforme également le retour arrière en action de déploiement plutôt qu'en course contre un cache vide.

3. Choisissez le plus petit périmètre d'invalidation

Utilisez une purge d'URL unique pour une seule URL stable. Utilisez des balises de contenu ou des clés de substitution lorsqu'un élément logique apparaît à de nombreuses URL. Utilisez un préfixe de chemin ou un nom d'hôte uniquement lorsque chaque objet de ce périmètre est connu comme étant affecté. Considérez une purge de zone complète comme un outil d'incident, et non comme une routine de mise en production.

Cloudflare documente la purge d'un seul fichier comme le choix par défaut recommandé et prend également en charge les balises, préfixes, noms d'hôte et la purge complète. Fastly prend en charge les purges d'URL et de clés de substitution ; sa purge douce peut marquer les objets comme périmés tout en les conservant temporairement. Ces contrôles sont propres aux fournisseurs : confirmez donc les limites et sémantiques exactes dans la documentation du compte avant de les automatiser.

4. Préférez les transitions douces lorsque la fraîcheur le permet

Pour le contenu éditorial non critique, stale-while-revalidate peut permettre à la périphérie de servir un objet récemment expiré pendant qu'elle récupère une version fraîche en arrière-plan. stale-if-error peut préserver une réponse utilisable lorsque l'origine est indisponible. Ces directives sont définies dans la RFC 5861, mais une règle métier détermine toujours si un prix ou un message de disponibilité légèrement ancien est acceptable. N'utilisez jamais la diffusion de contenu périmé pour justifier la mise en cache de données privées ou sensibles du point de vue de la sécurité.

5. Limitez le débit et observez les tâches de purge

Traitez l'invalidation comme du trafic de production. Mettez les requêtes en file d'attente, dédupliquez les URL, ne réessayez que les échecs transitoires documentés et consignez l'identifiant du changement, l'opérateur, le périmètre, la réponse du fournisseur et l'horodatage. Évitez de lancer des milliers d'appels indépendants lorsque des balises ou un lot limité peuvent exprimer le même changement. Surveillez les requêtes vers l'origine, le taux d'erreur, la latence, le taux de succès du cache et l'âge de la réponse la plus récente pendant le remplissage du cache.

Vérifiez depuis la périphérie, pas seulement depuis un navigateur

La vérification doit répondre à quatre questions :

  1. Le nouveau contenu existe-t-il à l'origine et via le nom d'hôte de production ?
  2. La purge a-t-elle ciblé chaque variante pertinente de la clé de cache ?
  3. Les réponses en périphérie renvoient-elles le marqueur de version, ETag ou l'identifiant de déploiement attendu ?
  4. La charge sur l'origine et les taux d'erreur sont-ils restés dans le budget de mise en production ?

Utilisez curl -I ou une requête complète depuis plusieurs régions et lors de sessions froides comme chaudes. Inspectez les en-têtes d'état du cache du fournisseur, Age, Date, ETag et Vary. Une première requête affichant MISS n'est pas un échec ; elle prouve que la requête a emprunté le chemin de remplissage. Une requête ultérieure devrait devenir un HIT avec la nouvelle version. Vérifiez également dans un vrai navigateur, car le cache navigateur, le service worker et le cache HTML sont distincts du cache CDN.

Pour l'e-commerce, vérifiez le comportement métier autant que les octets : prix du produit, état du stock, bannière promotionnelle, panier et paiement. Une page peut paraître nouvelle alors qu'une réponse API ou une variante d'image reste ancienne.

Revenir en arrière sans provoquer une seconde interruption

Si le nouvel objet est mal formé ou augmente les erreurs, arrêtez le déploiement et restaurez la version précédente de l'application ou du manifeste. Si les ressources antérieures ont toujours des URL immuables, l'ancienne page peut les référencer immédiatement. Purgez uniquement les URL stables ou balises défectueuses, puis préchauffez la réponse connue comme fonctionnelle depuis des sondes contrôlées. Si la purge elle-même était trop large, limitez le trafic ou servez temporairement une réponse périmée sûre pendant le repeuplement du cache, à condition que cette politique soit sûre pour le contenu.

Conservez les identifiants de retour arrière et le guide opérationnel d'invalidation à la disposition de la personne d'astreinte. Un retour arrière qui dépend de la recherche d'un contrôle de tableau de bord non documenté pendant un incident n'est pas un plan de retour arrière.

Erreurs courantes

  • Tout purger parce qu'une URL était erronée, provoquant une forte hausse mondiale de la charge sur l'origine.
  • Mettre à jour l'origine après la purge, en laissant un cache vide récupérer une mise en production ancienne ou incomplète.
  • Oublier les caches navigateur, les service workers, les variantes d'image ou un second CDN dans le chemin de diffusion.
  • Purger l'URL sans purger les dimensions de clé de cache créées par les cookies, la langue, la géographie ou Accept.
  • Mettre en cache des réponses authentifiées ou personnalisées parce qu'une règle générique correspondait à leur extension de fichier.
  • Utiliser partout des TTL courts plutôt que des ressources versionnées à longue durée de vie et des purges ciblées.
  • Considérer la réponse de réussite d'un fournisseur comme la preuve que chaque périphérie et navigateur a été actualisé.

Pour le modèle de diffusion global, lisez le guide CDN managé d'Optimi. Les variantes d'image et les clés de cache sont également traitées dans le guide sur les images adaptatives, tandis que contenu statique ou dynamique explique quelles réponses doivent pouvoir être mises en cache. Pour une approche de la résilience, consultez comment rendre un site web résilient en 2026.

Il n'y a que deux choses difficiles en informatique : l'invalidation du cache et nommer les choses.

Rendez les changements de cache plus sûrs

Échangez avec notre équipe sur les politiques de cache, les processus d'invalidation et la gouvernance de la diffusion en périphérie pour les sites critiques.

Contacter Optimi