Aller au contenu principal

3. Storing Responses in Caches

Un cache NE DOIT PAS (MUST NOT) stocker une réponse à une requête, sauf si :

  • La méthode de requête est comprise par le cache et définie comme pouvant être mise en cache, et
  • le code d'état de la réponse est compris par le cache, et
  • la directive de cache "no-store" (voir Section 5.2) n'apparaît pas dans les champs d'en-tête de la requête ou de la réponse, et
  • la directive de réponse "private" (voir Section 5.2.2.6) n'apparaît pas dans la réponse, si le cache est partagé, et
  • le champ d'en-tête Authorization (voir Section 4.2 de [RFC7235]) n'apparaît pas dans la requête, si le cache est partagé, sauf si la réponse l'autorise explicitement (voir Section 3.2), et
  • la réponse satisfait l'une des conditions suivantes :
    • contient un champ d'en-tête Expires (voir Section 5.3), ou
    • contient une directive de réponse max-age (voir Section 5.2.2.8), ou
    • contient une directive de réponse s-maxage (voir Section 5.2.2.9) et le cache est partagé, ou
    • contient une Extension Cache Control (voir Section 5.2.3) qui autorise sa mise en cache, ou
    • a un code d'état défini comme pouvant être mis en cache par défaut (voir Section 4.2.2), ou
    • contient une directive de réponse public (voir Section 5.2.2.5).

Notez que l'une quelconque des exigences énumérées ci-dessus peut être remplacée par une extension de contrôle de cache ; voir Section 5.2.3.

Dans ce contexte, un cache a « compris » une méthode de requête ou un code d'état de réponse s'il le reconnaît et implémente tout le comportement lié à la mise en cache spécifié.

Notez qu'en fonctionnement normal, certains caches ne stockeront pas une réponse qui n'a ni validateur de cache ni temps d'expiration explicite, car de telles réponses ne sont généralement pas utiles à stocker. Cependant, les caches ne sont pas interdits de stocker de telles réponses.