Strömmande SSR från edge
Strömma Reacts HTML-utdata med ReadableStream så att webbläsaren omedelbart kan visa meningsfullt innehåll.
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.
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
- Vad är edge-rendering och varför är det viktigt
- React på Cloudflare Workers med Hono
- Strömmande SSR från edge
- Strategier för edge-cache av React-appar