Passa al contenuto principale

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