- Navios
- 20 de agosto de 2026 às 03:14 UTC
- Autor
- Kamo
- Enviar
- 721669f
Três mudanças, todas removendo trabalho da janela onde a página está sendo julgada. `(pages)/layout.tsx` transportado `"use client"` e nunca precisou dele — nenhum estado, não efeito, nenhum manipulador, três elementos compostos juntos. A directiva carregar na direção errada: fez do layout um limite do cliente, então o toda a subtree re-rendered em cada navegação, e fez um rodapé do lado do servidor impossível, porque um componente cliente não pode importar um servidor. Que desbloqueou o rodapé, que era `"use cliente"` para exatamente dois botões - "configurações de cookies" e "de volta ao topo". A directiva não é selectiva, por isso ~29 ligações, quatro rubricas de coluna, a linha social e cinco parágrafos de multa legal imprimir tudo enviado como JavaScript e hidratado. O rodapé está no layout compartilhado, Então isso foi o custo de cada página, não de uma página. Os botões agora são uma pequena ilha e a análise per-link tornou-se `data-track` atributos, que o delegado o ouvinte já em TrackedClicks lê — então um link renderizado pelo servidor ainda reporta o seu clique sem transportar um manipulador. TrackedClicks se move para a disposição do root, uma vez que o rodapé agora depende dele em toda parte em vez de apenas na homepage. Contagem honesta sobre isso: é quase neutro em bytes. Um cliente componente custa uma referência de módulo na carga útil de voo; um componente servidor custa toda a sua árvore renderizada, assim a carga útil cresce 216 KB -> 239 KB bruto (+3,5 KB gzipped) enquanto JS ansioso cai apenas ligeiramente. O que realmente compra é a hidratação passa sobre os elementos ~150 do rodapé, em cada página, layout que já não re-renders na navegação. RoleProgress e JumpToBar são agora montados ociosos. Nem pode ser visto em chegada — a barra de progresso fica na largura zero e JumpToBar esconde-se até `scrollY > 300` — por isso ambos estavam hidratando e anexando ouvintes de rolagem para renderizar Nada no momento que importe. Eles também são os dois componentes aqui onde diferimento é comprovadamente livre de custo de layout: ambos são 'posição: fixo', então eles Não podem mudar nada quando chegarem. Vale a pena verificar em vez de supor, com CLS em um quarto da pontuação móvel. 'experimental.inlineCss' foi re-testado e permanece desligado, agora por uma razão medida em vez de um lembrado. A teoria era que seu resultado ruim anterior veio de framer-motion e gsap saturando o fio principal; ambos se foram, por isso foi Vale a pena tentar novamente. Não são as bibliotecas. A bandeira tira o documento de 53 KB para 93.4 KB gzip enquanto a folha de estilo é 17.8 KB gzip por conta própria, porque Next inlines it as a <style> block AND escapa de uma segunda cópia para o voo RSC carga útil: <style> 96,7 KB, script em linha 216 KB -> 334 KB. Esse +118 KB é um script o fio principal deve analisar antes de qualquer outra coisa — a forma exata do TBT pico que custou 20 pontos da primeira vez. Bloquear CSS é Unscored; TBT é 30% da pontuação móvel.