Zum Hauptinhalt springen

4. Die stale-if-error Cache-Control-Erweiterung

Die stale-if-error Cache-Control-Erweiterung gibt an, dass, wenn ein Fehler auftritt, eine zwischengespeicherte veraltete Antwort verwendet werden DARF (MAY), um die Anfrage zu erfüllen, unabhängig von anderen Frischeinformationen.

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

Wenn sie als Anfrage-Cache-Control-Erweiterung verwendet wird, ist ihr Anwendungsbereich die Anfrage, in der sie erscheint; wenn sie als Antwort-Cache-Control-Erweiterung verwendet wird, ist ihr Anwendungsbereich jede Anfrage, die auf die zwischengespeicherte Antwort anwendbar ist, in der sie vorkommt.

Ihr Wert gibt die Obergrenze für die Veralterung an; wenn die zwischengespeicherte Antwort stärker veraltet ist als der angegebene Betrag, SOLLTE die zwischengespeicherte Antwort NICHT verwendet werden, um die Anfrage zu erfüllen, sofern keine anderen Informationen vorliegen.

In diesem Zusammenhang ist ein Fehler jede Situation, die dazu führen würde, dass ein HTTP-Antwortstatuscode 500, 502, 503 oder 504 zurückgegeben wird.

Beachten Sie, dass diese Direktive die Frische nicht beeinflusst; veraltete zwischengespeicherte Antworten, die verwendet werden, SOLLTEN beim Senden immer noch sichtbar veraltet sein (d. h. einen Age-Header ungleich Null und einen Warn-Header haben, gemäß den Anforderungen von HTTP).

4.1. Beispiel

Eine Antwort, die enthält:

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

success

gibt an, dass sie für 600 Sekunden frisch ist und dass sie verwendet werden kann, wenn ein Fehler auftritt, nachdem sie für weitere 1200 Sekunden veraltet ist.

Wenn der Cache also 900 Sekunden später versucht zu validieren und auf Folgendes stößt:

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

failure

kann stattdessen die erfolgreiche Antwort zurückgegeben werden:

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

success

Nachdem das Alter größer als 1800 Sekunden ist (d. h. es war 1200 Sekunden lang veraltet), muss der Cache die Fehlermeldung durchschreiben.

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

failure