React Academy · Lektion

SWR-grundbegreber: Stale-While-Revalidate

Forstå SWRs cachingstrategi: Vis forældede data med det samme, validér igen i baggrunden, og opdatér, når dataene er friske.

Lektion 1 af 413 trin

SWR-grundbegreber: Stale-While-Revalidate er en gratis React Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i React Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. React Academy-kurset indeholder 4 lektioner i alt.

Hvad står SWR for?

SWR står for Stale-While-Revalidate, en HTTP-cache-strategi, der er defineret i RFC 5861. Strategien er at vise forældede (cachede) data med det samme til brugeren, derefter revalidere i baggrunden og opdatere brugerfladen, når friske data ankommer.

Denne tilgang prioriterer den oplevede ydeevne: Brugere ser data med det samme i stedet for at vente på en tur-retur til netværket.

Fordelen for brugeroplevelsen

Med traditionelle indlæsningsmønstre ser brugere en indlæsningsindikator ved hver navigering. Med SWR ser de de sidst kendte data med det samme, og brugerfladen opdateres lydløst i baggrunden, hvis dataene er ændret.

Det får applikationer til at føles betydeligt hurtigere og mindsker den kognitive afbrydelse, som indlæsningstilstande medfører.

Hvornår udløser SWR revalidering

SWR revaliderer automatisk data, når browserens vindue får fokus igen (brugeren skifter fane og vender tilbage), netværksforbindelsen genoprettes efter at have været offline, mutate() kaldes eksplicit, eller en timer for refreshInterval udløses.

Disse automatiske udløsere holder data friske uden at udvikleren manuelt skal håndtere logikken til at hente data igen.

SWR's tilstandsmaskine

En SWR-nøgle kan være i en af flere tilstande: loading (ingen cachede data, første hentning i gang), revalidating (cachede data findes, opdatering i baggrunden i gang), error (anmodningen mislykkedes) eller success (friske data er tilgængelige).

Hvis du forstår disse tilstande, kan du opbygge præcise indlæsningsskeletoner og fejlbrugerflader.

Den globale SWR-cache

SWR vedligeholder en global cache i hukommelsen, der er indekseret efter forespørgselsnøglen (typisk en URL-streng). Alle komponenter, der anmoder om den samme nøgle, får den samme cachede værdi og deltager i den samme revalideringscyklus.

Med denne automatiske deduplicering kan 10 komponenter hver kalde useSWR med den samme nøgle, mens der kun sendes én netværksanmodning.

Hentefunktionen

SWR adskiller logikken til cachehåndtering fra selve datahentningen. Du angiver en hentefunktion: en async-funktion, der modtager nøglen og returnerer data.

Hentefunktionen kan udskiftes: brug fetch, axios, graphql-request eller en vilkårlig asynkron datakilde. SWR håndterer caching og revalidering uanset, hvordan hentefunktionen fungerer.

Konfiguration af en global hentefunktion

Pak din app ind i SWRConfig med en value-prop, der indeholder en hentefunktion: value={{ fetcher: (url) => fetch(url).then(r => r.json()) }}. Alle useSWR-kald, der udelader et fetcher-argument, bruger denne globale standard.

Det samler API-konfigurationen (basis-URL, godkendelsesheadere) ét sted, så du ikke skal gentage den i hvert hook-kald.

SWR sammenlignet med traditionel datahentning

Det klassiske mønster bruger useEffect + useState til manuelt at håndtere loading-, data- og error-tilstande. SWR erstatter alt dette med ét hook-kald, der automatisk håndterer caching, deduplicering, baggrundsopdatering og gentagelse ved fejl.

Reduktionen i kode er betydelig: En typisk komponent til datahentning bliver reduceret fra over 20 linjer til 3 linjer.

Design af cache-nøgler

Nøglen identificerer entydigt en forespørgsel. Brug URL-strengen i enkle tilfælde. Til forespørgsler med parametre kan du bruge en array-nøgle: [url, params], hvor params er et stabilt objekt eller en streng. null deaktiverer forespørgslen.

Et godt nøgledesign sikrer, at relaterede forespørgsler deler cacheposter, og at uvedkommende forespørgsler ikke kolliderer.

Revalidering og netværksbelastning

SWR er intelligent, når det revaliderer: dedupingInterval (standardværdien er 2 sekunder) forhindrer, at flere revalideringer udløses samtidigt, hvis mange komponenter monteres på én gang. Der sendes kun én anmodning pr. nøgle inden for dedupliceringsvinduet.

Det forhindrer problemer med samtidige masseforespørgsler, som er almindelige i store komponenttræer, hvor mange komponenter henter de samme data.

SWR i Next.js-sammenhæng

SWR er udviklet af Vercel, virksomheden bag Next.js, og integrationen er problemfri. getServerSideProps eller getStaticProps kan forhåndshente data, og SWR hydratiserer ud fra den forhåndshentede værdi på klienten.

Det giver dig servergenereret indledende HTML med automatisk revalidering på klientsiden ved montering, så du kombinerer fordelene ved SSR og SWR.

Hvornår SWR revaliderer

Hvilket af følgende udløser IKKE SWR-revalidering som standard?

Opsummering af lektionen

SWR implementerer strategien Stale-While-Revalidate: vis cachede data med det samme, revalidér i baggrunden, og opdatér brugerfladen, når friske data er tilgængelige. Revalidering udløses ved fokus, genoprettet forbindelse, mutate og periodiske forespørgsler. Den globale cache deduplikerer forespørgsler på tværs af komponenter, og hentefunktionen kan udskiftes helt.

Denne model forenkler koden til datahentning markant og giver samtidig en hurtigere oplevet ydeevne.

Gratis at komme i gang

Lær React med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
88
Lektioner
324

Ofte stillede spørgsmål

Er lektionen “SWR-grundbegreber: Stale-While-Revalidate” gratis?

Ja — hele teksten til “SWR-grundbegreber: Stale-While-Revalidate” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af React Academy-kurset, skal du opgradere til CoddyKit PRO. React Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “SWR-grundbegreber: Stale-While-Revalidate”?

Forstå SWRs cachingstrategi: Vis forældede data med det samme, validér igen i baggrunden, og opdatér, når dataene er friske. Du øver dig i React Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på React Academy?

Der kræves ingen tidligere erfaring. React Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “SWR-grundbegreber: Stale-While-Revalidate”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne React Academy-lektion?

Ja. Alle React Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. SWR-grundbegreber: Stale-While-Revalidate
  2. useSWR-hook: Hentning, indlæsning og fejltilstande
  3. Mutationer og optimistiske opdateringer med SWR
  4. SWR kontra React Query: Vælg det rette værktøj
← Tilbage til React Academy