React Academy · Oppitunti

Suoratoistettava SSR edgestä

Suoratoista Reactin HTML-tuloste ReadableStreamilla, jotta selain voi näyttää merkityksellistä sisältöä heti.

Oppitunti 3/413 vaihetta

Suoratoistettava SSR edgestä on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/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.

Suoratoiston etu

Kun palvelin suoratoistaa HTML:ää, selain vastaanottaa ja renderöi sisällön osissa sen sijaan, että se odottaisi koko dokumenttia. Käyttäjät näkevät sivun näkyvät osat ja voivat käyttää niitä — esimerkiksi otsaketta, navigaatiota ja hero-osiota — samalla kun hitaammin latautuvat, tiedoista riippuvat osiot ovat vielä latautumassa.

renderToReadableStream ja bootstrapScripts

bootstrapScripts-parametrin välittäminen renderToReadableStream-funktiolle kertoo Reactille, missä asiakaspuolen JS-bundle sijaitsee. React lisää streamin loppuun script-tagin, jotta selain lataa bundlen ja kutsuu hydrateRoot-funktiota. Näin sivusta tulee vuorovaikutteinen sitä mukaa kuin kukin osio suoratoistetaan valmiiksi.

Suspense-rajat komponenttipuussa

Reactin suoratoisto perustuu Suspense-rajoihin, jotka jakavat komponenttipuun itsenäisesti suoratoistettaviin osioihin. Suspense-rajan sisällä olevat komponentit, jotka odottavat tietoja heitetyn Promisen vuoksi, suoratoistetaan ensin paikkamerkkeinä, minkä jälkeen ne valmistuvat ja niiden varsinainen sisältö suoratoistetaan myöhemmin.

onShellReady: milloin suoratoisto aloitetaan

onShellReady-callback suoritetaan, kun suoratoistoon valmis HTML-kuori — kaikki Suspense-rajojen ulkopuolinen sisältö — on valmis. Tämä on oikea hetki asettaa HTTP-tilakoodi ja vastauksen otsakkeet sekä kutsua pipe(res)-funktiota tai aloittaa ReadableStreamin lukeminen.

Miksi tilakoodit on asetettava ensin

HTTP-tilakoodit ja otsakkeet on lähetettävä ennen vastauksen rungon aloittamista. Koska suoratoisto alkaa onShellReady-tapahtumassa, kaiken virheenkäsittelylogiikan (tilakoodin 500 asettamisen ja uudelleenohjauksen) tulee tapahtua ennen kuoren virtaamisen alkamista. Kun suoratoisto on alkanut, tilakoodi on lukittu.

Virheenkäsittely: onShellError

onShellError suoritetaan, kun kriittinen virhe tapahtuu ennen kuoren valmistumista, esimerkiksi ylätason komponentissa, joka ei kuulu mihinkään Suspense-rajaan. Tällöin kuorta ei koskaan suoratoisteta, ja vastaukseksi tulee palauttaa staattinen virhesivu tai uudelleenohjata virhereitille.

Virheenkäsittely: onError

onError suoritetaan Suspense-rajojen sisällä tapahtuvien palautuvien virheiden yhteydessä. React pystyy silti suoratoistamaan sivun muun sisällön, ja virheen kohdannut raja renderöi virheen varalla olevan käyttöliittymän. Käyttäkää onError-tapahtumaa lokitukseen: tallentakaa virhe observability-alustallenne keskeyttämättä streamia.

Progressiivinen parantaminen ja aikakatkaisut

Jos Suspense-rajauksen tietojen saaminen kestää liian kauan, streamatkaa shell silti ja antakaa rajauksen hydratoitua client-puolella. Toteuttakaa aikakatkaisu: kutsukaa viiden sekunnin kuluttua streamin abort()-funktiota, jos rajaus ei ole valmistunut, jolloin client hakee tiedot itse useEffectin avulla.

Cloudflare Workers: Streamauksen toimintaperiaate

Workers-ajoaika välittää ReadableStreamin suoraan Response-vastauksen rungoksi. Cloudflaren infrastruktuuri välittää jokaisen palan käyttäjän selaimelle sitä mukaa kuin React tuottaa sen, eikä koko dokumenttia puskuroita. Tämän ansiosta HTML:n ensimmäiset tavut lähtevät reunaverkon PoP:sta millisekunneissa pyynnön saapumisesta.

Abort: Pitkien streamien hallinta

renderToReadableStream palauttaa abort-ohjausfunktion. Jos pyyntö peruutetaan käyttäjän siirtyessä toiselle sivulle, abort()-funktion kutsuminen estää Reactia jatkamasta renderöintiä ja tietojen käsittelyä. Näin vältetään hylättyihin pyyntöihin kuluva turha laskenta ja pidetään Workerin suorittimen käyttö rajattuna.

Päästä päähän -viiveprofiili

Reunaverkon streamauksen yhteydessä koko viiveketju näyttää tältä: 5 ms (pyynnöstä lähimpään PoP:iin) + 2 ms (Workerin kylmäkäynnistys) + 8 ms (shellin renderöinti) = 15 ms ensimmäiseen tavuun. Käyttäjän selain renderöi LCP-elementin shellistä samalla, kun sivun loppuosa streamataan taustalla.

onShellReady-kutsun ajoitus

Milloin onShellReady-callback suoritetaan tarkalleen streamauksen aikana?

Oppitunnin yhteenveto

Reunaverkosta toteutettu streamaava SSR toimittaa HTML:n paloina ja parantaa FCP- ja LCP-tuloksia lähettämällä shellin heti. Suspense-rajaukset jakavat puun itsenäisesti streamattaviin osioihin. onShellReady on signaali streamin välittämisen aloittamiseen — asettakaa statuskoodit ennen sen kutsumista. onShellError käsittelee kohtalokkaat virheet, onError korjattavissa olevat virheet, ja abort() estää peruutettujen pyyntöjen turhan työn.

Aloita maksutta

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 ”Suoratoistettava SSR edgestä” ilmainen?

Kyllä – oppitunnin ”Suoratoistettava SSR edgestä” 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 ”Suoratoistettava SSR edgestä”?

Suoratoista Reactin HTML-tuloste ReadableStreamilla, jotta selain voi näyttää merkityksellistä sisältöä heti. 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 3/4.

Kuinka kauan ”Suoratoistettava SSR edgestä”-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

  1. Mitä reunalaskenta on ja miksi sillä on merkitystä
  2. React Cloudflare Workersissa Honoa käyttäen
  3. Suoratoistettava SSR edgestä
  4. React-sovellusten reunavälimuististrategiat
← Takaisin: React Academy