4. L'estensione Cache-Control stale-if-error
L'estensione Cache-Control stale-if-error indica che quando si verifica un errore, una risposta obsoleta memorizzata nella cache PUÒ (MAY) essere utilizzata per soddisfare la richiesta, indipendentemente da altre informazioni di freschezza.
stale-if-error = "stale-if-error" "=" delta-seconds
Quando utilizzata come estensione Cache-Control di richiesta, il suo ambito di applicazione è la richiesta in cui appare; quando utilizzata come estensione Cache-Control di risposta, il suo ambito è qualsiasi richiesta applicabile alla risposta memorizzata nella cache in cui si verifica.
Il suo valore indica il limite superiore all'obsolescenza; quando la risposta memorizzata nella cache è più obsoleta della quantità indicata, la risposta memorizzata nella cache NON DOVREBBE (SHOULD NOT) essere utilizzata per soddisfare la richiesta, in assenza di altre informazioni.
In questo contesto, un errore è qualsiasi situazione che comporterebbe la restituzione di un codice di stato di risposta HTTP 500, 502, 503 o 504.
Si noti che questa direttiva non influisce sulla freschezza; le risposte obsolete memorizzate nella cache che vengono utilizzate DOVREBBERO (SHOULD) essere ancora visibilmente obsolete quando inviate (cioè, avere un'intestazione Age diversa da zero e un'intestazione di avviso, come da requisiti di HTTP).
4.1. Esempio
Una risposta contenente:
HTTP/1.1 200 OK
Cache-Control: max-age=600, stale-if-error=1200
Content-Type: text/plain
success
indica che è fresca per 600 secondi e che può essere utilizzata se si verifica un errore dopo essere diventata obsoleta per ulteriori 1200 secondi.
Pertanto, se la cache tenta di convalidare 900 secondi dopo e incontra:
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain
failure
può essere restituita invece la risposta riuscita:
HTTP/1.1 200 OK
Cache-Control: max-age=600, stale-if-error=1200
Age: 900
Content-Type: text/plain
success
Dopo che l'età è superiore a 1800 secondi (cioè, è stata obsoleta per 1200 secondi), la cache deve scrivere il messaggio di errore.
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain
failure