0Pricing
React Academy · Lekcja

Strumieniowanie SSR z brzegu sieci

Prześlą Państwo strumieniowo wynik HTML Reacta za pomocą ReadableStream, aby przeglądarka mogła natychmiast wyświetlić istotną treść.

Strumieniowanie SSR z brzegu sieci to bezpłatna lekcja React Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Zalety strumieniowania

Gdy serwer strumieniuje kod HTML, przeglądarka otrzymuje i renderuje treść we fragmentach, zamiast czekać na cały dokument. Dzięki temu użytkownicy mogą zobaczyć i używać widocznych części strony — nagłówka, nawigacji i sekcji hero — podczas gdy wolniejsze sekcje zależne od danych wciąż się ładują.

renderToReadableStream z bootstrapScripts

Przekazanie bootstrapScripts do renderToReadableStream informuje Reacta, gdzie znajduje się pakiet JavaScriptu po stronie klienta. React wstrzykuje znacznik script na końcu strumienia, aby przeglądarka załadowała pakiet i wywołała hydrateRoot, nadając stronie interaktywność w miarę strumieniowego przesyłania kolejnych sekcji.

Granice Suspense w drzewie komponentów

Strumieniowanie Reacta opiera się na granicach Suspense, które dzielą drzewo komponentów na sekcje możliwe do niezależnego strumieniowania. Komponenty znajdujące się wewnątrz granicy Suspense i oczekujące na dane (za pośrednictwem rzuconego obiektu Promise) są najpierw strumieniowane jako zastępniki, a następnie po rozwiązaniu strumieniowana jest ich właściwa treść.

onShellReady: kiedy rozpocząć strumieniowanie

Funkcja callback onShellReady jest wywoływana, gdy powłoka HTML bez zawieszonych elementów — wszystko poza granicami Suspense — jest gotowa do strumieniowania. To właściwy moment na ustawienie kodu statusu HTTP i nagłówków odpowiedzi, a następnie wywołanie pipe(res) lub rozpoczęcie odczytu z ReadableStream.

Dlaczego kody statusu trzeba ustawić wcześniej

Kody statusu HTTP i nagłówki muszą zostać wysłane przed rozpoczęciem przesyłania treści odpowiedzi. Ponieważ strumieniowanie rozpoczyna się w onShellReady, wszelkie czynności związane z obsługą błędów, takie jak ustawienie statusu 500 lub przekierowanie, muszą nastąpić przed rozpoczęciem przesyłania powłoki — po rozpoczęciu strumieniowania kod statusu jest już zablokowany.

Obsługa błędów: onShellError

onShellError jest wywoływane, gdy przed przygotowaniem powłoki wystąpi błąd krytyczny — na przykład błąd w komponencie najwyższego poziomu znajdującym się poza dowolną granicą Suspense. W takim przypadku powłoka nigdy nie jest strumieniowana i należy odpowiedzieć statyczną stroną błędu lub przekierować użytkownika do trasy błędu.

Obsługa błędów: onError

onError jest wywoływane w przypadku możliwych do odzyskania błędów wewnątrz granic Suspense. React nadal może strumieniować pozostałą część strony, a granica, w której wystąpił błąd, renderuje awaryjny interfejs użytkownika. Należy używać onError do rejestrowania błędów: przechwycić błąd w platformie obserwowalności bez przerywania strumienia.

Progresywne usprawnianie i limity czasu

Jeśli dane granicy Suspense są pobierane zbyt długo, należy mimo to przesłać szkielet i pozwolić, aby granica została zhydratowana po stronie klienta. Należy zaimplementować limit czasu: po 5 sekundach wywołać abort() dla strumienia, jeśli granica nie zostanie rozwiązana, a klient sam pobierze dane za pośrednictwem useEffect.

Mechanizm strumieniowania w Cloudflare Workers

Środowisko uruchomieniowe Workers przekazuje ReadableStream bezpośrednio jako treść Response. Infrastruktura Cloudflare przekazuje każdy fragment do przeglądarki użytkownika w miarę generowania go przez React, bez buforowania całego dokumentu. Oznacza to, że pierwsze bajty HTML opuszczają brzegowy PoP w ciągu milisekund od nadejścia żądania.

abort(): kontrolowanie długich strumieni

renderToReadableStream zwraca funkcję kontrolującą przerwanie. Jeśli żądanie zostanie anulowane (użytkownik przejdzie na inną stronę), wywołanie abort() zatrzymuje React przed dalszym renderowaniem i przetwarzaniem danych. Zapobiega to marnowaniu zasobów obliczeniowych na osierocone żądania i ogranicza zużycie CPU Workera.

Profil opóźnień od końca do końca

W przypadku strumieniowania na brzegu pełny łańcuch opóźnień wygląda następująco: 5 ms (żądanie do najbliższego PoP) + 2 ms (zimny start Workera) + 8 ms (renderowanie szkieletu) = 15 ms do pierwszego bajtu. Przeglądarka użytkownika renderuje element LCP ze szkieletu, podczas gdy reszta strony nadal jest przesyłana strumieniowo w tle.

Moment wywołania onShellReady

Kiedy dokładnie podczas strumieniowego SSR jest wywoływany callback onShellReady?

Podsumowanie lekcji

Strumieniowe SSR z brzegu dostarcza HTML we fragmentach, poprawiając FCP i LCP dzięki natychmiastowemu wysłaniu szkieletu. Granice Suspense dzielą drzewo na niezależnie przesyłane strumieniowo sekcje. onShellReady to sygnał do rozpoczęcia przekazywania strumienia — kody statusu należy ustawić przed jego wywołaniem. onShellError obsługuje błędy krytyczne, onError — błędy możliwe do odzyskania, a abort() zapobiega marnowaniu pracy po anulowaniu żądania.

Często zadawane pytania

Czy lekcja „Strumieniowanie SSR z brzegu sieci” jest bezpłatna?

Tak — pełny tekst „Strumieniowanie SSR z brzegu sieci” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Strumieniowanie SSR z brzegu sieci”?

Prześlą Państwo strumieniowo wynik HTML Reacta za pomocą ReadableStream, aby przeglądarka mogła natychmiast wyświetlić istotną treść. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Strumieniowanie SSR z brzegu sieci”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym jest renderowanie na brzegu sieci i dlaczego ma znaczenie
  2. React na Cloudflare Workers z Hono
  3. Strumieniowanie SSR z brzegu sieci
  4. Strategie buforowania aplikacji React na brzegu sieci
← Powrót do React Academy