Stale-While-Revalidate (SWR) ist eine Direktive des Cache-Control-Headers, die das Verhalten einer Antwort nach Ablauf ihrer Frische-Dauer steuert. Sie erlaubt dem Cache, eine veraltete (stale) Antwort sofort an den Nutzer auszuliefern und parallel im Hintergrund eine neue Version vom Server zu holen.
So funktioniert es
Cache-Control: public, max-age=60, stale-while-revalidate=600
Die Antwort ist 60 Sekunden frisch. In den folgenden 600 Sekunden (10 Minuten) darf der Cache die alte Antwort sofort liefern — der Nutzer wartet nicht auf den Ursprungsserver — während im Hintergrund revalidiert und der Cache aktualisiert wird. Erst wenn auch das SWR-Fenster abläuft, muss der Nutzer auf eine frische Antwort warten.
Vorteile und Details
- Versteckt die Latenz des Ursprungsservers: Die gefühlte Antwortzeit bleibt niedrig, auch wenn der Server gerade langsam ist.
- Benötigt immer einen Anker wie max-age oder
s-maxage— ohne Frische-Dauer gibt es keinen definierten Ablaufzeitpunkt. - Der verwandte
stale-if-errorerlaubt die Auslieferung einer stale Antwort, wenn der Ursprungsserver einen Fehler (5xx) liefert. - Eingeführt in RFC 5861; verbreitet bei CDNs und im Browser-Caching.
SWR ist eine moderne Ergänzung des klassischen Revalidierungs-Modells (Conditional Request mit ETag): Statt zu warten, liefert der Cache sofort — und der Nutzer merkt nichts von der Aktualisierung im Hintergrund.
Verwandte Grundlagen: HTTP-Caching, Expires, Cache.