React Academy · Lektion

Strömmande SSR från edge

Strömma Reacts HTML-utdata med ReadableStream så att webbläsaren omedelbart kan visa meningsfullt innehåll.

Lektion 3 av 413 steg

Strömmande SSR från edge är en gratis lektion i React Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för React Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i React Academy innehåller totalt 4 lektioner.

Fördelarna med strömning

När en server strömmar HTML tar webbläsaren emot och renderar innehåll i delar i stället för att vänta på hela dokumentet. Det innebär att användarna kan se och interagera med de synliga delarna av sidan — sidhuvudet, navigeringen och herosektionen — medan långsammare, databeroende sektioner fortfarande läses in.

renderToReadableStream med bootstrapScripts

Om du skickar bootstrapScripts till renderToReadableStream anger du var klientens JavaScript-paket finns. React infogar en script-tagg i slutet av strömmen så att webbläsaren laddar paketet och anropar hydrateRoot, vilket gör sidan interaktiv allteftersom varje sektion har strömmats klart.

Suspense-gränser i trädet

React använder Suspense-gränser för att dela upp komponentträdet i sektioner som kan strömmas oberoende av varandra. Komponenter i en Suspense-gräns som väntar på data (genom att kasta ett Promise) strömmas först som platshållare och får sedan sitt riktiga innehåll strömmat när datan är klar.

onShellReady: när strömningen ska starta

Callback-funktionen onShellReady körs när det icke-suspenderade HTML-skalet — allt utanför Suspense-gränserna — är klart att strömmas. Det är rätt tidpunkt att ange HTTP-statuskoden och svarshuvudena och sedan anropa pipe(res) eller börja läsa från ReadableStream.

Varför statuskoder måste anges först

HTTP-statuskoder och svarshuvuden måste skickas innan svarskroppen börjar. Eftersom strömningen startar med onShellReady måste all felhantering (att ange status 500 eller göra en omdirigering) ske innan skalet börjar flöda — när strömningen väl har börjat är statuskoden låst.

Felhantering: onShellError

onShellError körs när ett allvarligt fel inträffar innan skalet är klart — till exempel ett fel i en komponent på toppnivå utanför alla Suspense-gränser. I det här fallet strömmas skalet aldrig, och du bör svara med en statisk felsida eller omdirigera till en felrutt.

Felhantering: onError

onError körs vid återställningsbara fel i Suspense-gränser. React kan fortfarande strömma resten av sidan, och den felande gränsen renderar sitt reservgränssnitt för fel. Använd onError för loggning: fånga felet i din observability-plattform utan att avbryta strömmen.

Progressive enhancement och tidsgränser

Om data för en Suspense-boundary tar för lång tid ska ni ändå strömma skalet och låta boundaryn hydreras på klienten. Implementera en timeout: efter 5 sekunder anropar ni abort() på strömmen om boundaryn inte har lösts, så hämtar klienten själv data via useEffect.

Strömningsmekanik i Cloudflare Workers

Workers-körmiljön skickar ReadableStream direkt som Response-body. Cloudflares infrastruktur vidarebefordrar varje chunk till användarens webbläsare i takt med att React producerar den, utan att buffra hela dokumentet. Det innebär att de första HTML-bytena lämnar edge-PoP:en inom millisekunder från att begäran anländer.

Abort: styra långa strömmar

renderToReadableStream returnerar en abort-controllerfunktion. Om begäran avbryts (användaren navigerar bort) stoppar ett anrop till abort() React från att fortsätta rendera och bearbeta data. Detta förhindrar onödig beräkning för övergivna begäranden och håller Workers CPU-användning inom en begränsad nivå.

Latensprofil från början till slut

Med edge-strömning ser hela latenskedjan ut så här: 5 ms (begäran till närmaste PoP) + 2 ms (kallstart av Worker) + 8 ms (rendering av skalet) = 15 ms till första byten. Användarens webbläsare renderar LCP-elementet från skalet medan resten av sidan fortsätter att strömmas i bakgrunden.

Tidpunkt för onShellReady

När anropas callback-funktionen onShellReady exakt under strömmande SSR?

Sammanfattning av lektionen

SSR-strömning från edge levererar HTML i chunkar, vilket förbättrar FCP och LCP genom att skicka skalet omedelbart. Suspense-boundaries delar upp trädet i sektioner som kan strömmas oberoende av varandra. onShellReady är signalen att börja pipea — ange statuskoder innan ni anropar den. onShellError hanterar fatala fel, onError hanterar återställningsbara fel och abort() förhindrar onödigt arbete för avbrutna begäranden.

Gratis att börja

Lär dig React med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
88
Lektioner
324

Vanliga frågor

Är lektionen ”Strömmande SSR från edge” gratis?

Ja – hela texten till ”Strömmande SSR från edge” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i React Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i React Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Strömmande SSR från edge”?

Strömma Reacts HTML-utdata med ReadableStream så att webbläsaren omedelbart kan visa meningsfullt innehåll. Ni övar på React Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig React Academy?

Du behöver inga förkunskaper. Utbildningen i React Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Strömmande SSR från edge”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här React Academy-lektionen?

Ja. Varje React Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Vad är edge-rendering och varför är det viktigt
  2. React på Cloudflare Workers med Hono
  3. Strömmande SSR från edge
  4. Strategier för edge-cache av React-appar
← Tillbaka till React Academy