SWR:n perusteet: stale-while-revalidate
Ymmärtäkää SWR:n välimuististrategia: tarjoilkaa vanhentuneet tiedot heti, validoikaa ne taustalla ja päivittäkää tuoreilla tiedoilla
SWR:n perusteet: stale-while-revalidate on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.
Mistä SWR on lyhenne?
SWR on lyhenne sanoista Stale-While-Revalidate, joka on RFC 5861:ssä määritelty HTTP-välimuististrategia. Strategia toimii näin: vanhentunut eli välimuistissa oleva data tarjotaan käyttäjälle välittömästi, minkä jälkeen se validoidaan uudelleen taustalla ja käyttöliittymä päivitetään tuoreen datan saapuessa.
Tässä lähestymistavassa painotetaan koettua suorituskykyä: käyttäjät näkevät datan heti sen sijaan, että joutuisivat odottamaan verkkopyynnön edestakaista matkaa.
Käyttäjäkokemuksen hyöty
Perinteisillä latausmalleilla käyttäjät näkevät latausympyrän jokaisella navigointikerralla. SWR:n kanssa he näkevät viimeksi tunnetun datan heti, ja käyttöliittymä päivittyy huomaamatta taustalla, jos data on muuttunut.
Tämä saa sovellukset tuntumaan huomattavasti nopeammilta ja vähentää lataustilojen aiheuttamaa kognitiivista häiriötä.
Milloin SWR käynnistää uudelleenvalidoinnin
SWR validoi datan automaattisesti uudelleen, kun selainikkuna saa jälleen kohdistuksen käyttäjän vaihtaessa välilehteä ja palatessa takaisin, verkkoyhteys palautuu offline-tilan jälkeen, nimenomaista mutate()-funktiota kutsutaan tai määritettävän refreshInterval-ajastimen aika umpeutuu.
Nämä automaattiset käynnistimet pitävät datan tuoreena ilman, että kehittäjän tarvitsee hallita uudelleenhakujen logiikkaa manuaalisesti.
SWR:n tilakone
SWR-avain voi olla jossakin useista tiloista: loading (välimuistissa ei ole dataa ja ensimmäinen haku on käynnissä), revalidating (välimuistissa on dataa ja taustapäivitys on käynnissä), error (pyyntö epäonnistui) tai success (tuoretta dataa on saatavilla).
Näiden tilojen ymmärtäminen auttaa rakentamaan täsmälliset latausskeletonit ja virhekäyttöliittymät.
SWR:n maailmanlaajuinen välimuisti
SWR ylläpitää pyynnön avaimen perusteella indeksoitua maailmanlaajuista muistissa olevaa välimuistia. Avain on yleensä URL-merkkijono. Jokainen saman avaimen pyytävä komponentti saa saman välimuistissa olevan arvon ja osallistuu samaan uudelleenvalidointisykliin.
Tämän automaattisen deduplikoinnin ansiosta 10 komponenttia voi kutsua useSWR:ää samalla avaimella, mutta verkkoon lähetetään vain yksi pyyntö.
Fetcher-funktio
SWR erottaa välimuistin hallintalogiikan varsinaisesta datan hausta. Määritätte fetcher-funktion, joka on async-funktio: se vastaanottaa avaimen ja palauttaa datan.
Fetcher on vaihdettavissa: käyttäkää fetchiä, axiosia, graphql-requestia tai mitä tahansa async-datalähdettä. SWR käsittelee välimuistia ja uudelleenvalidointia riippumatta siitä, miten fetcher toimii.
Maailmanlaajuisen fetcherin määrittäminen
Ympäröikää sovelluksenne SWRConfigilla, jonka value-prop sisältää fetcher-funktion: value={{ fetcher: (url) => fetch(url).then(r => r.json()) }}. Jokainen useSWR-kutsu, josta fetcher-argumentti puuttuu, käyttää tätä maailmanlaajuista oletusarvoa.
Tämä keskittää API-määritykset, kuten perus-URL:n ja todennusotsakkeet, yhteen paikkaan ilman niiden toistamista jokaisessa hook-kutsussa.
SWR verrattuna perinteiseen datan hakuun
Klassisessa mallissa useEffect + useState hallitsevat lataus-, data- ja virhetiloja manuaalisesti. SWR korvaa tämän kaiken yhdellä hook-kutsulla, joka käsittelee automaattisesti välimuistin, deduplikoinnin, taustapäivitykset ja virheiden uudelleenyritykset.
Koodin määrä vähenee huomattavasti: tyypillinen dataa hakeva komponentti kutistuu yli 20 rivistä kolmeen.
Välimuistiavainten suunnittelu
Avain yksilöi pyynnön. Käyttäkää yksinkertaisissa tapauksissa URL-merkkijonoa. Parametrillisissa pyynnöissä käyttäkää taulukkoavainta: [url, params], jossa params on vakaa objekti tai merkkijono. Null poistaa pyynnön käytöstä.
Hyvä avainsuunnittelu varmistaa, että toisiinsa liittyvät pyynnöt jakavat välimuistimerkinnät ja etteivät toisiinsa liittymättömät pyynnöt saa samaa avainta.
Uudelleenvalidointi ja verkkokuormitus
SWR käsittelee uudelleenvalidoinnin älykkäästi: dedupingInterval, jonka oletusarvo on 2 sekuntia, estää useiden uudelleenvalidointien käynnistymisen samanaikaisesti, jos monet komponentit otetaan käyttöön yhtä aikaa. Kutakin avainta kohden lähetetään deduplikointi-ikkunan aikana vain yksi pyyntö.
Tämä estää suurissa komponenttipuissa yleiset thundering herd -ongelmat, joissa monet komponentit hakevat samaa dataa.
SWR Next.js:n yhteydessä
SWR:n on rakentanut Vercel, Next.js:n takana oleva yritys, ja integraatio on saumaton. getServerSideProps tai getStaticProps voi esiladata datan, ja SWR hydratoi tuon esiladatun arvon asiakaspuolella.
Tämä tarjoaa palvelimella renderöidyn alustavan HTML:n sekä automaattisen asiakaspuolen uudelleenvalidoinnin liitettäessä komponentti käyttöliittymään ja yhdistää SSR:n ja SWR:n parhaat puolet.
Milloin SWR uudelleenvalidói
Mikä seuraavista EI käynnistä SWR:n uudelleenvalidointia oletusarvoisesti?
Oppitunnin yhteenveto
SWR toteuttaa Stale-While-Revalidate-strategian: välimuistissa oleva data tarjotaan heti, validoidaan uudelleen taustalla ja käyttöliittymä päivitetään tuoreen datan saapuessa. Uudelleenvalidointi käynnistyy kohdistuksen palautuessa, yhteyden muodostuessa uudelleen, mutaten yhteydessä ja kyselyllä. Maailmanlaajuinen välimuisti deduplikoi komponenttien väliset pyynnöt, ja fetcher-funktio on täysin vaihdettavissa.
Tämä malli yksinkertaistaa datan hakemiseen liittyvää koodia huomattavasti ja parantaa koettua suorituskykyä.
Opi React tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 88
- Oppitunnit
- 324
Usein kysytyt kysymykset
Onko oppitunti ”SWR:n perusteet: stale-while-revalidate” ilmainen?
Kyllä – oppitunnin ”SWR:n perusteet: stale-while-revalidate” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”SWR:n perusteet: stale-while-revalidate”?
Ymmärtäkää SWR:n välimuististrategia: tarjoilkaa vanhentuneet tiedot heti, validoikaa ne taustalla ja päivittäkää tuoreilla tiedoilla Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”SWR:n perusteet: stale-while-revalidate”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?
Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- SWR:n perusteet: stale-while-revalidate
- useSWR-hook: haku-, lataus- ja virhetilat
- Mutaatiot ja optimistiset päivitykset SWR:llä
- SWR vai React Query: oikean työkalun valinta