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-error erlaubt 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.