React Academy · Leçon

SSR en continu depuis la périphérie

Diffusez la sortie HTML de React avec ReadableStream afin que le navigateur affiche immédiatement du contenu utile.

Leçon 3 sur 413 étapes

SSR en continu depuis la périphérie est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

L'avantage de la diffusion en flux

Lorsqu'un serveur diffuse le HTML en flux, le navigateur reçoit et affiche le contenu par fragments au lieu d'attendre le document complet. Les utilisateurs peuvent ainsi voir et utiliser les parties visibles de la page — l'en-tête, la navigation et la section principale — pendant que les sections dépendantes de données plus lentes sont encore en cours de chargement.

renderToReadableStream avec bootstrapScripts

Transmettre bootstrapScripts à renderToReadableStream indique à React où se trouve l'ensemble JavaScript côté client. React insère une balise script à la fin du flux afin que le navigateur charge l'ensemble et appelle hydrateRoot, rendant la page interactive à mesure que chaque section finit d'être diffusée.

Les limites Suspense dans l'arbre

La diffusion en flux de React repose sur les limites Suspense pour diviser l'arbre des composants en sections pouvant être diffusées indépendamment. Les composants situés dans une limite Suspense qui attendent des données (au moyen d'une promesse levée) sont d'abord diffusés sous forme d'espaces réservés, puis leur contenu réel est diffusé une fois prêt.

onShellReady : quand commencer la diffusion en flux

La fonction de rappel onShellReady se déclenche lorsque la structure HTML non suspendue — tout ce qui se trouve en dehors des limites Suspense — est prête à être diffusée. C'est le moment approprié pour définir le code d'état HTTP et les en-têtes de la réponse, puis appeler pipe(res) ou commencer à lire le ReadableStream.

Pourquoi les codes d'état doivent être définis en premier

Les codes d'état HTTP et les en-têtes doivent être envoyés avant le début du corps de la réponse. Comme la diffusion commence avec onShellReady, toute logique de gestion des erreurs (définir le statut 500 ou effectuer une redirection) doit être exécutée avant le début de la diffusion de la structure HTML : une fois la diffusion commencée, le code d'état ne peut plus être modifié.

Gestion des erreurs : onShellError

onShellError se déclenche lorsqu'une erreur fatale survient avant que la structure HTML soit prête, par exemple en cas d'erreur dans un composant de niveau supérieur situé en dehors de toute limite Suspense. Dans ce cas, la structure HTML n'est jamais diffusée et vous devez répondre avec une page d'erreur statique ou rediriger vers une route d'erreur.

Gestion des erreurs : onError

onError se déclenche pour les erreurs récupérables au sein des limites Suspense. React peut continuer à diffuser le reste de la page ; la limite concernée affiche son interface utilisateur de secours en cas d'erreur. Utilisez onError pour la journalisation : capturez l'erreur dans votre plateforme d'observabilité sans interrompre le flux.

Amélioration progressive et délais d'expiration

Si les données d'une frontière Suspense mettent trop de temps à arriver, diffusez tout de même l'enveloppe initiale et laissez la frontière s'hydrater côté client. Mettez en œuvre un délai d'expiration : après 5 secondes, appelez abort() sur le flux si la frontière n'a toujours pas été résolue ; le client récupérera alors lui-même les données via useEffect.

Mécanismes de diffusion de Cloudflare Workers

L'environnement d'exécution de Workers transmet directement le ReadableStream comme corps de l'objet Response. L'infrastructure de Cloudflare achemine chaque fragment vers le navigateur de l'utilisateur au fur et à mesure que React le produit, sans mettre en mémoire tampon l'intégralité du document. Cela signifie que les premiers octets de HTML quittent le PoP périphérique quelques millisecondes après l'arrivée de la requête.

Annulation : contrôler les flux longs

renderToReadableStream renvoie une fonction de contrôleur d'annulation. Si la requête est annulée (l'utilisateur navigue vers une autre page), appeler abort() arrête React afin qu'il ne poursuive pas le rendu ni le traitement des données. Cela évite de gaspiller des ressources de calcul pour des requêtes orphelines et maintient l'utilisation du processeur par le Worker dans des limites définies.

Profil de latence de bout en bout

Avec la diffusion en périphérie, la chaîne complète de latence se présente ainsi : 5 ms (requête vers le PoP le plus proche) + 2 ms (démarrage à froid du Worker) + 8 ms (rendu de l'enveloppe initiale) = 15 ms avant le premier octet. Le navigateur de l'utilisateur affiche l'élément LCP à partir de l'enveloppe initiale pendant que le reste de la page continue d'être diffusé en arrière-plan.

Moment d'exécution de onShellReady

À quel moment précis le rappel onShellReady est-il exécuté pendant la diffusion SSR ?

Récapitulatif de la leçon

La SSR diffusée depuis la périphérie fournit le HTML par fragments, améliorant le FCP et le LCP en envoyant immédiatement l'enveloppe initiale. Les frontières Suspense divisent l'arbre en sections pouvant être diffusées indépendamment. onShellReady signale qu'il faut commencer le raccordement au flux — définissez les codes d'état avant de l'appeler. onShellError gère les défaillances fatales, onError les défaillances récupérables, et abort() évite de gaspiller des ressources pour les requêtes annulées.

Gratuit pour commencer

Apprends React avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
88
Leçons
324

Questions Fréquemment Posées

La leçon « SSR en continu depuis la périphérie » est-elle gratuite ?

Oui — le texte complet de « SSR en continu depuis la périphérie » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « SSR en continu depuis la périphérie » ?

Diffusez la sortie HTML de React avec ReadableStream afin que le navigateur affiche immédiatement du contenu utile. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « SSR en continu depuis la périphérie » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Qu’est-ce que le rendu en périphérie et pourquoi est-il important
  2. React sur Cloudflare Workers avec Hono
  3. SSR en continu depuis la périphérie
  4. Stratégies de mise en cache en périphérie pour les applications React
← Retour à React Academy