Zum Hauptinhalt springen

3. Die stale-while-revalidate Cache-Control-Erweiterung

Wenn sie in einer HTTP-Antwort vorhanden ist, gibt die stale-while-revalidate Cache-Control-Erweiterung an, dass Caches die Antwort, in der sie erscheint, bedienen DÜRFEN (MAY), nachdem sie veraltet ist, bis zur angegebenen Anzahl von Sekunden.

stale-while-revalidate = "stale-while-revalidate" "=" delta-seconds

Wenn eine zwischengespeicherte Antwort aufgrund des Vorhandenseins dieser Erweiterung veraltet bedient wird, SOLLTE (SHOULD) der Cache versuchen, sie erneut zu validieren, während er weiterhin veraltete Antworten bedient (d. h. ohne Blockierung).

Beachten Sie, dass "veraltet" impliziert, dass die Antwort einen Age-Header ungleich Null und einen Warn-Header hat, gemäß den Anforderungen von HTTP.

Wenn delta-seconds vergeht, ohne dass die zwischengespeicherte Entität erneut validiert wurde, SOLLTE sie NICHT (SHOULD NOT) weiterhin veraltet bedient werden, sofern keine anderen Informationen vorliegen.

3.1. Beispiel

Eine Antwort, die enthält:

Cache-Control: max-age=600, stale-while-revalidate=30

gibt an, dass sie für 600 Sekunden frisch ist und bis zu weiteren 30 Sekunden veraltet bedient werden kann, während eine asynchrone Validierung versucht wird. Wenn die Validierung nicht schlüssig ist oder kein Verkehr vorhanden ist, der sie auslöst, stellt die stale-while-revalidate-Funktion nach 30 Sekunden ihren Betrieb ein, und die zwischengespeicherte Antwort wird "wirklich" veraltet (d. h. die nächste Anfrage wird blockieren und normal behandelt werden).

Im Allgemeinen werden Server die Kombination aus max-age und stale-while-revalidate auf die längste gesamte potenzielle Frischelebensdauer einstellen wollen, die sie tolerieren können. Wenn beispielsweise beide auf 600 eingestellt sind, muss der Server tolerieren können, dass die Antwort bis zu 20 Minuten lang aus dem Cache bedient wird.

Da die asynchrone Validierung nur erfolgt, wenn eine Anfrage auftritt, nachdem die Antwort veraltet ist, aber vor dem Ende des stale-while-revalidate-Fensters, bestimmt die Größe dieses Fensters und die Wahrscheinlichkeit einer Anfrage währenddessen, wie wahrscheinlich es ist, dass alle Anfragen ohne Verzögerung bedient werden. Wenn das Fenster zu klein ist oder der Verkehr zu spärlich ist, fallen einige Anfragen heraus und blockieren, bis der Server die zwischengespeicherte Antwort validieren kann.