Aller au contenu principal

1. Introduction

Les déploiements HTTP modernes utilisent souvent plusieurs couches de mise en cache. Par exemple, un site Web peut utiliser un cache sur le serveur d'origine lui-même ; il peut déployer une couche de mise en cache dans le même réseau que le serveur d'origine, il peut utiliser un ou plusieurs CDN distribués sur Internet, et il peut également bénéficier de la mise en cache du navigateur.

Parce qu'il est souvent souhaitable de contrôler ces différentes classes de caches séparément, il est nécessaire de disposer d'un moyen de cibler les directives de cache sur eux. Par exemple, si un éditeur dispose d'un mécanisme pour invalider le contenu d'un cache avec lequel il a une relation (comme un cache CDN), il peut être plus à l'aise d'attribuer une politique de mise en cache plus généreuse à celui-ci tout en souhaitant toujours restreindre le comportement des autres caches.

Le champ d'en-tête de réponse HTTP Cache-Control (défini dans la Section 5.2 de [HTTP-CACHING]) est largement utilisé pour diriger le comportement de mise en cache. Cependant, il est relativement indifférencié ; alors que certaines directives de cache (par exemple, s-maxage) sont ciblées sur une classe spécifique de caches (pour s-maxage, les caches partagés), le ciblage n'est pas disponible de manière cohérente pour toutes les directives de cache existantes (par exemple, stale-while-revalidate). Ceci est particulièrement problématique car le nombre d'extensions de mise en cache augmente avec le nombre de cibles potentielles.

Certaines implémentations ont défini des mécanismes de contrôle ad hoc pour surmonter ce problème, mais leur interopérabilité est faible. La Section 2 définit un cadre standard pour le contrôle de cache ciblé utilisant des en-têtes de réponse HTTP, et la Section 3 définit un tel en-tête : le champ d'en-tête de réponse CDN-Cache-Control.

1.1. Conventions de notation

Les mots-clés "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" et "OPTIONAL" dans ce document doivent être interprétés comme décrit dans le BCP 14 [RFC2119] [RFC8174] quand, et seulement quand, ils apparaissent en majuscules, comme indiqué ici.