0Pricing
React Academy · Lektion

SWR-Grundlagen: Stale-While-Revalidate

Die Caching-Strategie von SWR verstehen: veraltete Daten sofort ausliefern, im Hintergrund erneut validieren und bei neuen Daten aktualisieren

SWR-Grundlagen: Stale-While-Revalidate ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Wofür steht SWR?

SWR steht für Stale-While-Revalidate, eine in RFC 5861 definierte HTTP-Cache-Strategie. Dabei werden dem Benutzer zunächst veraltete (zwischengespeicherte) Daten angezeigt. Anschließend werden sie im Hintergrund erneut validiert und die UI wird aktualisiert, sobald aktuelle Daten eintreffen.

Dieser Ansatz stellt die wahrgenommene Performance in den Vordergrund: Benutzer sehen Daten sofort, statt auf eine Netzwerk-Rundreise zu warten.

Der Vorteil für die Benutzererfahrung

Bei herkömmlichen Lademustern sehen Benutzer bei jeder Navigation einen Spinner. Mit SWR sehen sie sofort die zuletzt bekannten Daten, und die UI wird im Hintergrund unauffällig aktualisiert, wenn sich die Daten geändert haben.

Dadurch fühlen sich Anwendungen deutlich schneller an, und die kognitive Unterbrechung durch Ladezustände wird reduziert.

Wann SWR eine erneute Validierung auslöst

SWR validiert Daten automatisch neu, wenn das Browserfenster wieder den Fokus erhält (der Benutzer wechselt den Tab und kehrt zurück), die Netzwerkverbindung nach einer Offline-Phase wiederhergestellt wird, explizit mutate() aufgerufen wird oder ein konfigurierbarer refreshInterval-Timer auslöst.

Diese automatischen Auslöser halten die Daten aktuell, ohne dass Sie die Logik zum erneuten Abrufen manuell verwalten müssen.

Die Zustandsmaschine von SWR

Ein SWR-Key kann sich in einem von mehreren Zuständen befinden: loading (keine zwischengespeicherten Daten, erster Abruf läuft), revalidating (zwischengespeicherte Daten vorhanden, Aktualisierung im Hintergrund läuft), error (Anfrage fehlgeschlagen) oder success (aktuelle Daten verfügbar).

Wenn Sie diese Zustände verstehen, können Sie korrekte Lade-Skeletons und Fehler-UIs erstellen.

Der globale SWR-Cache

SWR verwaltet einen globalen In-Memory-Cache, dessen Schlüssel der Anfrage-Key ist (typischerweise eine URL-Zeichenfolge). Jede Komponente, die denselben Key anfordert, erhält denselben zwischengespeicherten Wert und nimmt am selben Revalidierungszyklus teil.

Dank dieser automatischen Deduplizierung können 10 Komponenten jeweils useSWR mit demselben Key aufrufen, wobei nur eine Netzwerkanfrage gesendet wird.

Die Fetcher-Funktion

SWR trennt die Cache-Verwaltung vom eigentlichen Abrufen der Daten. Sie stellen eine Fetcher-Funktion bereit: eine async-Funktion, die den Key entgegennimmt und die Daten zurückgibt.

Der Fetcher ist austauschbar: Verwenden Sie fetch, axios, graphql-request oder eine beliebige asynchrone Datenquelle. SWR übernimmt das Caching und die Revalidierung unabhängig davon, wie der Fetcher funktioniert.

Einen globalen Fetcher konfigurieren

Umschließen Sie Ihre App mit SWRConfig und übergeben Sie ein value-Prop, das eine Fetcher-Funktion enthält: value={{ fetcher: (url) => fetch(url).then(r => r.json()) }}. Jeder useSWR-Aufruf, bei dem das Fetcher-Argument fehlt, verwendet diesen globalen Standardwert.

Dadurch zentralisieren Sie die API-Konfiguration (Basis-URL, Authentifizierungs-Header) an einer Stelle, ohne sie in jedem Hook-Aufruf zu wiederholen.

SWR im Vergleich zum herkömmlichen Abrufen von Daten

Das klassische Muster verwendet useEffect + useState, um Lade-, Daten- und Fehlerzustände manuell zu verwalten. SWR ersetzt all das durch einen einzigen Hook-Aufruf, der Caching, Deduplizierung, Aktualisierungen im Hintergrund und automatische Wiederholungen bei Fehlern übernimmt.

Die Codeeinsparung ist beträchtlich: Eine typische Komponente zum Abrufen von Daten schrumpft von mehr als 20 Zeilen auf 3 Zeilen.

Entwurf von Cache-Keys

Der Key identifiziert eine Anfrage eindeutig. Verwenden Sie in einfachen Fällen die URL-Zeichenfolge. Für Anfragen mit Parametern verwenden Sie einen Array-Key: [url, params], wobei params ein stabiles Objekt oder eine Zeichenfolge ist. Null deaktiviert die Anfrage.

Ein gut entworfener Key sorgt dafür, dass zusammengehörige Anfragen Cache-Einträge gemeinsam nutzen und nicht zusammengehörige Anfragen nicht miteinander kollidieren.

Revalidierung und Netzwerkaufwand

SWR geht intelligent mit der Revalidierung um: Das dedupingInterval (Standardwert: 2 Sekunden) verhindert, dass mehrere Revalidierungen gleichzeitig ausgelöst werden, wenn viele Komponenten gleichzeitig eingebunden werden. Innerhalb des Deduplizierungsfensters wird pro Key nur eine Anfrage gesendet.

Dadurch werden Thundering-Herd-Probleme vermieden, die in großen Komponentenbäumen häufig auftreten, wenn viele Komponenten dieselben Daten abrufen.

SWR im Kontext von Next.js

SWR wird von Vercel entwickelt, dem Unternehmen hinter Next.js, und die Integration ist nahtlos. Mit getServerSideProps oder getStaticProps können Sie Daten vorab abrufen, und SWR übernimmt diesen vorab abgerufenen Wert auf dem Client.

So erhalten Sie serverseitig gerendertes initiales HTML mit automatischer clientseitiger Revalidierung beim Mounten und kombinieren die Vorteile von SSR und SWR.

Wann SWR erneut validiert

Welche der folgenden Aktionen löst die SWR-Revalidierung standardmäßig NICHT aus?

Zusammenfassung der Lektion

SWR implementiert die Strategie Stale-While-Revalidate: zwischengespeicherte Daten sofort ausliefern, im Hintergrund erneut validieren und die UI aktualisieren, sobald aktuelle Daten verfügbar sind. Eine Revalidierung wird bei Fokus, erneuter Verbindung, mutate und beim Polling ausgelöst. Der globale Cache dedupliziert Anfragen über mehrere Komponenten hinweg, und die Fetcher-Funktion kann vollständig ausgetauscht werden.

Dieses Modell vereinfacht den Code zum Abrufen von Daten erheblich und sorgt zugleich für eine schnellere wahrgenommene Performance.

Häufig gestellte Fragen

Ist die Lektion „SWR-Grundlagen: Stale-While-Revalidate“ kostenlos?

Ja — der vollständige Text von „SWR-Grundlagen: Stale-While-Revalidate“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „SWR-Grundlagen: Stale-While-Revalidate“?

Die Caching-Strategie von SWR verstehen: veraltete Daten sofort ausliefern, im Hintergrund erneut validieren und bei neuen Daten aktualisieren Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „SWR-Grundlagen: Stale-While-Revalidate“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. SWR-Grundlagen: Stale-While-Revalidate
  2. useSWR-Hook: Abrufen, Laden und Fehlerzustände
  3. Mutationen und optimistische Aktualisierungen mit SWR
  4. SWR vs. React Query: Das passende Werkzeug auswählen
← Zurück zu React Academy