Suoratoistettava SSR edgestä
Suoratoista Reactin HTML-tuloste ReadableStreamilla, jotta selain voi näyttää merkityksellistä sisältöä heti.
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.
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
- Mitä reunalaskenta on ja miksi sillä on merkitystä
- React Cloudflare Workersissa Honoa käyttäen
- Suoratoistettava SSR edgestä
- React-sovellusten reunavälimuististrategiat