0Pricing
React Academy · Lektion

Caching, Stale Time und Refetching im Hintergrund

Konfigurieren Sie staleTime und gcTime, um zu steuern, wann Daten erneut vom Server abgerufen werden.

Caching, Stale Time und Refetching im Hintergrund ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.

Willkommen

In dieser Lektion konfigurieren Sie staleTime und gcTime, um zu steuern, wie lange React Query Daten als aktuell betrachtet und wie lange es zwischengespeicherte Daten im Speicher behält.

Aktuelle und veraltete Daten

React Query verfolgt, ob zwischengespeicherte Daten „aktuell“ oder „veraltet“ sind. Aktuelle Daten werden sofort ohne Netzwerkanfrage zurückgegeben. Veraltete Daten werden sofort zurückgegeben, während im Hintergrund ein erneuter Abruf zu ihrer Aktualisierung startet.

staleTime

staleTime legt fest, wie lange Daten (in Millisekunden) aktuell bleiben. Der Standardwert ist 0 (sofort veraltet). Bei einem Wert von 60000 werden Daten, die innerhalb der letzten Minute abgerufen wurden, ohne erneuten Abruf im Hintergrund zurückgegeben.
useQuery({
  queryKey: ['users'],
  queryFn: fetchUsers,
  staleTime: 60_000, // fresh for 60 seconds
})

staleTime für statische Daten festlegen

Legen Sie für Daten, die sich selten ändern (z. B. Länderliste oder Konfigurationsoptionen), einen hohen staleTime-Wert fest. Für Live-Daten (z. B. Aktienkurse) verwenden Sie weiterhin den Standardwert 0 und aktivieren Sie Polling.
// Effectively never stale — reload only on explicit invalidation
useQuery({ queryKey: ['countries'], queryFn: fetchCountries,
  staleTime: Infinity })

gcTime (Garbage Collection)

gcTime (früher cacheTime) legt fest, wie lange NICHT VERWENDETE zwischengespeicherte Daten im Speicher bleiben, bevor sie durch die Garbage Collection entfernt werden. Der Standardwert beträgt 5 Minuten. Auch nach Ablauf von gcTime kann React Query sofort neue Daten abrufen, wenn ein neuer Subscriber eingebunden wird.
useQuery({
  queryKey: ['products'],
  queryFn: fetchProducts,
  gcTime: 10 * 60 * 1000, // keep in memory for 10 minutes
})

staleTime im Vergleich zu gcTime

staleTime steuert, WANN erneut abgerufen wird (Aktualität der Daten). gcTime steuert, WANN zwischengespeicherte Daten aus dem Speicher entfernt werden. staleTime <= gcTime ist das typische Verhältnis.

Indikatoren für erneute Abrufe im Hintergrund

Wenn React Query im Hintergrund Daten erneut abruft, ist `isFetching` true, obwohl `isLoading` false ist (die Daten sind bereits im Cache). Verwenden Sie isFetching, um einen dezenten Ladeindikator anzuzeigen.
const { data, isLoading, isFetching } = useQuery({ /* ... */ });

return (
  <>
    {isLoading ? <Spinner /> : <DataView data={data} />}
    {isFetching && !isLoading && <RefreshIndicator />}
  </>
);

refetchOnWindowFocus

Standardmäßig ruft React Query veraltete Queries erneut ab, wenn der Benutzer zum Tab zurückwechselt. Deaktivieren Sie diese Option für Daten, die selten aktualisiert werden.
useQuery({
  queryKey: ['settings'],
  queryFn: fetchSettings,
  refetchOnWindowFocus: false,
})

refetchInterval für Polling

Legen Sie `refetchInterval` fest, um eine Query automatisch in einem bestimmten Zeitintervall abzufragen. Das ist für Live-Daten-Dashboards nützlich.
useQuery({
  queryKey: ['liveStats'],
  queryFn: fetchStats,
  refetchInterval: 5000, // every 5 seconds
})

Platzhalterdaten

Verwenden Sie `placeholderData`, um während eines erneuten Abrufs die vorherigen Daten anzuzeigen und Layoutverschiebungen zu verhindern. Die Option keepPreviousData erleichtert dies bei der Paginierung.
import { keepPreviousData } from '@tanstack/react-query';

useQuery({
  queryKey: ['posts', page],
  queryFn: () => fetchPage(page),
  placeholderData: keepPreviousData,
})

Schnelltest

Was bewirkt das Setzen von staleTime: Infinity für eine Query?

Zusammenfassung

staleTime steuert die Aktualität — wie lange es dauert, bis Daten einen erneuten Abruf im Hintergrund auslösen. gcTime steuert den Speicher — wie lange nicht verwendete Daten im Cache bleiben. isFetching signalisiert erneute Abrufe im Hintergrund. Verwenden Sie placeholderData für eine nahtlose Paginierung.

Als Nächstes

Nächste Lektion: **Mutations mit useMutation** — Sie senden Daten an APIs und invalidieren Queries nach erfolgreicher Ausführung.

Häufig gestellte Fragen

Ist die Lektion „Caching, Stale Time und Refetching im Hintergrund“ kostenlos?

Ja — der vollständige Text von „Caching, Stale Time und Refetching im Hintergrund“ 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 „Caching, Stale Time und Refetching im Hintergrund“?

Konfigurieren Sie staleTime und gcTime, um zu steuern, wann Daten erneut vom Server abgerufen werden. 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 2 von 4.

Wie lange dauert die Lektion „Caching, Stale Time und Refetching im Hintergrund“?

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. React Query und QueryClient einrichten
  2. Caching, Stale Time und Refetching im Hintergrund
  3. Mutations mit useMutation
  4. Infinite Scroll und Pagination mit useInfiniteQuery
← Zurück zu React Academy