0Pricing
React Academy · Leçon

Mise en cache, durée de fraîcheur et récupération en arrière-plan

Configurez staleTime et gcTime pour contrôler le moment où les données sont récupérées à nouveau depuis le serveur.

Mise en cache, durée de fraîcheur et récupération en arrière-plan est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Bienvenue

Dans cette leçon, vous configurerez staleTime et gcTime pour contrôler pendant combien de temps React Query conserve des données à jour et pendant combien de temps il conserve les données mises en cache en mémoire.

Données à jour ou obsolètes

React Query suit l’état des données mises en cache, qui peuvent être « à jour » ou « obsolètes ». Les données à jour sont renvoyées immédiatement, sans requête réseau. Les données obsolètes sont également renvoyées immédiatement, mais une nouvelle récupération en arrière-plan démarre pour les mettre à jour.

staleTime

staleTime définit pendant combien de temps, en millisecondes, les données restent à jour. La valeur par défaut est 0, ce qui signifie qu’elles sont immédiatement considérées comme obsolètes. Avec une valeur de 60000, les données récupérées au cours de la dernière minute sont renvoyées sans nouvelle récupération en arrière-plan.
useQuery({
  queryKey: ['users'],
  queryFn: fetchUsers,
  staleTime: 60_000, // fresh for 60 seconds
})

Définir staleTime pour les données statiques

Pour les données qui changent rarement, comme une liste de pays ou des options de configuration, définissez une valeur élevée pour staleTime. Pour les données en temps réel, comme les cours des actions, conservez la valeur par défaut 0 et activez l’interrogation périodique.
// Effectively never stale — reload only on explicit invalidation
useQuery({ queryKey: ['countries'], queryFn: fetchCountries,
  staleTime: Infinity })

gcTime (récupération de mémoire)

gcTime, anciennement cacheTime, définit pendant combien de temps les données mises en cache UNUSED restent en mémoire avant d’être supprimées par le ramasse-miettes. La valeur par défaut est de 5 minutes. Même après gcTime, React Query peut récupérer immédiatement les données si un nouvel abonné est monté.
useQuery({
  queryKey: ['products'],
  queryFn: fetchProducts,
  gcTime: 10 * 60 * 1000, // keep in memory for 10 minutes
})

staleTime ou gcTime

staleTime contrôle WHEN effectuer une nouvelle récupération, c’est-à-dire la fraîcheur des données. gcTime contrôle WHEN supprimer les données mises en cache de la mémoire. La relation staleTime <= gcTime est généralement utilisée.

Indicateurs de nouvelle récupération en arrière-plan

Lorsque React Query récupère de nouveau des données en arrière-plan, `isFetching` vaut true même si `isLoading` vaut false, car les données sont déjà mises en cache. Utilisez isFetching pour afficher un indicateur de chargement discret.
const { data, isLoading, isFetching } = useQuery({ /* ... */ });

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

refetchOnWindowFocus

Par défaut, React Query récupère de nouveau les requêtes obsolètes lorsque l’utilisateur revient sur l’onglet. Désactivez ce comportement pour les données qui sont rarement mises à jour.
useQuery({
  queryKey: ['settings'],
  queryFn: fetchSettings,
  refetchOnWindowFocus: false,
})

refetchInterval pour l’interrogation périodique

Définissez `refetchInterval` pour interroger automatiquement une requête selon une durée donnée. Cette option est utile pour les tableaux de bord de données en temps réel.
useQuery({
  queryKey: ['liveStats'],
  queryFn: fetchStats,
  refetchInterval: 5000, // every 5 seconds
})

Données d’espace réservé

Utilisez `placeholderData` pour afficher les données précédentes pendant une nouvelle récupération, afin d’éviter les décalages de mise en page. L’option keepPreviousData facilite cette approche pour la pagination.
import { keepPreviousData } from '@tanstack/react-query';

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

Vérification rapide

Que permet d’obtenir la définition de staleTime: Infinity sur une requête ?

Récapitulatif

staleTime contrôle la fraîcheur : le délai avant que les données déclenchent une nouvelle récupération en arrière-plan. gcTime contrôle la mémoire : le délai pendant lequel les données inutilisées restent en cache. isFetching signale les nouvelles récupérations en arrière-plan. Utilisez placeholderData pour une pagination fluide.

Ensuite

Prochaine leçon : **Mutations avec useMutation** — vous enverrez des données aux API et invaliderez les requêtes en cas de réussite.

Questions Fréquemment Posées

La leçon « Mise en cache, durée de fraîcheur et récupération en arrière-plan » est-elle gratuite ?

Oui — le texte complet de « Mise en cache, durée de fraîcheur et récupération en arrière-plan » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Mise en cache, durée de fraîcheur et récupération en arrière-plan » ?

Configurez staleTime et gcTime pour contrôler le moment où les données sont récupérées à nouveau depuis le serveur. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Mise en cache, durée de fraîcheur et récupération en arrière-plan » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configurer React Query et QueryClient
  2. Mise en cache, durée de fraîcheur et récupération en arrière-plan
  3. Mutations avec useMutation
  4. Défilement infini et pagination avec useInfiniteQuery
← Retour à React Academy