Aller au contenu principal

4. L'extension Cache-Control stale-if-error

L'extension Cache-Control stale-if-error indique que lorsqu'une erreur est rencontrée, une réponse périmée mise en cache PEUT être utilisée pour satisfaire la requête, indépendamment d'autres informations de fraîcheur.

stale-if-error = "stale-if-error" "=" delta-seconds

Lorsqu'elle est utilisée comme une extension Cache-Control de requête, sa portée d'application est la requête dans laquelle elle apparaît ; lorsqu'elle est utilisée comme une extension Cache-Control de réponse, sa portée est toute requête applicable à la réponse mise en cache dans laquelle elle se produit.

Sa valeur indique la limite supérieure de vétusté ; lorsque la réponse mise en cache est plus périmée que la quantité indiquée, la réponse mise en cache NE DEVRAIT PAS être utilisée pour satisfaire la requête, en l'absence d'autres informations.

Dans ce contexte, une erreur est toute situation qui entraînerait le renvoi d'un code d'état de réponse HTTP 500, 502, 503 ou 504.

Notez que cette directive n'affecte pas la fraîcheur ; les réponses mises en cache périmées qui sont utilisées DEVRAIENT toujours être visiblement périmées lorsqu'elles sont envoyées (c'est-à-dire avoir un en-tête Age non nul et un en-tête d'avertissement, conformément aux exigences de HTTP).

4.1. Exemple

Une réponse contenant :

HTTP/1.1 200 OK
Cache-Control: max-age=600, stale-if-error=1200
Content-Type: text/plain

success

indique qu'elle est fraîche pendant 600 secondes, et qu'elle peut être utilisée si une erreur est rencontrée après être devenue périmée pendant 1200 secondes supplémentaires.

Ainsi, si le cache tente de valider 900 secondes plus tard et rencontre :

HTTP/1.1 500 Internal Server Error
Content-Type: text/plain

failure

la réponse réussie peut être renvoyée à la place :

HTTP/1.1 200 OK
Cache-Control: max-age=600, stale-if-error=1200
Age: 900
Content-Type: text/plain

success

Une fois que l'âge est supérieur à 1800 secondes (c'est-à-dire qu'elle a été périmée pendant 1200 secondes), le cache doit transmettre le message d'erreur.

HTTP/1.1 500 Internal Server Error
Content-Type: text/plain

failure