Rendre le serveur l'application authentifiée, et réparer l'orge de secours que 500s

Performancekamo-internal
Expédié
26 août 2026 à 03:39 UTC
Auteur
kamo
Commite
dba4d98

MemberListProvider est revenu nul jusqu'à ce que son effet de montage s'enfuit, et il reste au-dessus de NavTop ET "enfants" de sorte qu'une ligne ait maintenu la seule application authentifiée hors de la HTML rendu par serveur. Le document était de 1,23 MB, ne portant pratiquement aucun balisage: rien peints jusqu'à ce que la coquille de racine ait téléchargé, analysé et hydratée, et PageSpeed a rapporté pas d'élément LCP parce qu'il n'y avait rien à mesurer. Vérifié en construisant et en servant l'application, et non en raisonnant à son sujet. Contre la construction serveur autonome, / maintenant retourne 200 avec 16 033 octets de DOM réel sur 152 éléments deux en-têtes, dix boutons, "Mes entreprises / Mon profil / Se déconnecter" et où /valider, sur Ce que AuthedChrome rend délibérément les enfants nu, retourne 1 622 octets sur 16. Cette différence est la coquille, et elle est maintenant dans le HTML. Sécurité car les deux valeurs que navir sont déterministes et membres d'openNodes la sortie du serveur et le premier client rendent l'accord de construction. Rien ici ne lit un navigateur global tout en rendant; scripts/check-ssr-safe.mjs le prouve et passe en test de npm. Notez ce que cela ne change PAS: ChargeingProvider commence toujours se réaliser, donc la marque Les éclaboussures recouvrent la coque pour ses 500 ms. Le nav est maintenant derrière cette éclaboussure plutôt que absent, ce qui est la condition préalable à la décision d'échauffement qui vaut la peine d'être prise. Le même exercice a révélé un vrai bug assis derrière la porte. React ne peut pas sérialiser un une instance de classe à partir d'un composant de serveur vers un composant client, et FALLBACK de la mise en page L'organisation est construite avec Organization. Le chemin heureux jamais hit it parce que l'Organisation retourne zawait res.json()-, déjà clair et simple cast. Donc la gouffre qui existe pour garder l'application utilisable quand l'organisation va chercher Les échecs supprimaient plutôt l'ensemble du document avec un 500. Je l'ai frappé directement: avec le backend inatteignable, / renvoyé 500 "Seuls objets en plaine... peuvent être transmis au client Composants". Fixé en s'étendant en un objet lisse à la frontière, qui couvre les deux chemins. OrgProvider réhydrate déjà tout ce qu'il est remis Organisation d'organisations d'organisation ? organisation : - donc un objet clair est exactement ce qu'il attend, et c'est ce que la production a toujours envoyé c'est ça. La deuxième rèse en ligne à l'appel SessionProvider était inaccessible (le bloc Au-dessus, elle garantit déjà une organisation non nulle) et a disparu. Vérifié: la construction de la production réussit; / et/valider les deux retours de 200 de la construction serveur; tsc --noEmit clean; les 10 gardes passent.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation