Analyseur Cache-Control

Analyser les en-têtes de réponse, l’âge actuel et les fenêtres conditionnelles d’usage périmé.

About this tool

Collez des en-têtes de réponse ou une seule valeur Cache-Control, choisissez un cache privé ou partagé, puis Analyser. L’analyse suppose une réponse GET de statut 200, pas d’Authorization et des clés de cache correspondantes. Elle n’effectue aucune requête réseau et n’inspecte ni ne garantit le stockage dans un cache navigateur. Les directives de requête et la fraîcheur heuristique sont hors du modèle.

Fraîcheur : une réponse est fraîche exactement lorsque son âge actuel est inférieur à sa durée de fraîcheur. Un cache partagé utilise s-maxage avant max-age ; un cache privé ignore s-maxage pour la durée de vie. Sinon Expires fournit la durée relative à Date, ou à l’heure de réception si Date est absent. Les durées négatives deviennent nulles. Sans durée de vie explicite, la fraîcheur reste inconnue. Permission de stockage, fraîcheur et réutilisation sont des résultats distincts : no-cache peut autoriser le stockage mais exige une revalidation avant chaque réutilisation, tandis que no-store interdit stockage et réutilisation sauf si must-understand laisse la décision non résolue.

Âge : âge actuel = max(0, heure de réception − Date, Age + délai de réponse) + temps en cache. Sans Date, le terme d’âge apparent est nul et une note s’affiche. L’heure de réception doit être au format ISO UTC, par exemple 2026-09-16T12:00:00Z, éventuellement avec exactement trois chiffres fractionnaires de seconde. Délai et temps en cache acceptent des décimales de 0 à 2147483648 secondes. Pour une réception à 12:00:00, Date à 11:59:50, Age 5, délai 2 et temps en cache 3, l’âge actuel est 13 secondes. Avec max-age=60, il reste 47 secondes de fraîcheur.

Usage périmé conditionnel : stale-while-revalidate (SWR) autorise la réutilisation périmée pendant une revalidation asynchrone. Sa fenêtre commence à la durée de fraîcheur et exclut l’âge de fin. stale-if-error (SIE) exige une erreur éligible, comme une panne réseau/DNS ou HTTP 500, 502, 503 ou 504, et inclut son âge supérieur déclaré. Aucune n’étend la durée de fraîcheur. Actif ne reporte que la condition d’âge, pas si une revalidation ou une erreur éligible a réellement eu lieu. no-cache et must-revalidate interdisent ces exceptions périmées non validées ; proxy-revalidate et s-maxage applicable le font pour les caches partagés. Les restrictions de stockage, les directives invalides et Vary: * rendent aussi les fenêtres indisponibles.

Interprétation conservative : private interdit le stockage partagé. private et no-cache qualifiés par champs s’appliquent à toute la réponse ; le retrait de champs n’est pas simulé. Les directives numériques répétées et les arguments reconnus invalides rendent l’analyse périmée. must-understand dépend de capacités pour le code de statut que cet outil ne peut pas établir, donc le stockage reste inconnu ; private interdit toujours le stockage partagé. Vary: * exige de contacter l’origine, et les autres valeurs Vary exigent des en-têtes de requête correspondants. Les validateurs reconnus ne prouvent pas qu’une requête d’origine validera avec succès une réponse stockée. Les extensions inconnues et les autres en-têtes sont listés mais ignorés. Le comportement supplémentaire d’immutable n’est pas modélisé.

Les noms d’en-têtes et de directives sont insensibles à la casse. Plusieurs lignes Cache-Control sont combinées ; virgules entre guillemets et échappements sont pris en charge. Une ligne de statut HTTP facultative doit indiquer 200. Date et Expires prennent en charge IMF-fixdate en GMT, par exemple Wed, 16 Sep 2026 12:00:00 GMT. Date ou Age invalides et Date/Age/Expires en double sont rejetés. Un Expires invalide signifie une durée nulle si aucune directive prioritaire ne s’applique. Les HTTP delta-seconds n’utilisent que des chiffres ; les valeurs au-dessus de 2147483648 secondes sont saturées à cette limite avec une note. Limites : 16384 caractères d’entrée, 128 lignes et 128 directives.

Modifier les saisies efface le résultat. Effacer les résultats conserve les saisies. Dans l’application, la session et le résultat sont conservés. Un rechargement complet rétablit les dernières saisies compactes analysées avec succès et attend Analyser. Les blocs d’en-têtes de plus de 1024 caractères restent seulement dans la session ; une limite de taille d’état compact peut aussi omettre les en-têtes au rechargement.

Sources : RFC 9111: HTTP Caching, en particulier les sections 4.2 et 5.2, et RFC 5861: stale-while-revalidate and stale-if-error.