Usando streaming para melhorar o desempenho da página
O SSR (Server-Side Rendering) do Astro utiliza streaming HTML para enviar cada componente ao navegador assim que disponível para carregamento de página mais rápido. Para melhorar ainda mais o desempenho, você pode construir seus componentes de forma estratégica para otimizar seu carregamento ao evitar buscas de dados obstrutivas.
O exemplo de refatoração a seguir demonstra como melhorar o desempenho de uma página ao mover chamadas fetch
para outros componentes, retirando-as de um componente que impeça a renderização da página.
O seguinte await
da página aguarda alguns dados no frontmatter. O Astro esperará que todas as chamadas fetch
sejam resolvidas antes de enviar qualquer HTML ao navegador.
Ao mover as chamadas await
para componentes menores, você aproveita o streaming Astro. Usando os componentes abaixo para realizar as buscas de dados, Astro pode apresentar parte do HTML primeiro, como o título, e depois os parágrafos quando os dados estiverem prontos.
A página Astro abaixo, utilizando esses componentes, pode apresentar partes da página mais cedo. As tags <head>
, <body>
e <h2>
não são mais bloqueadas pelas buscas de dados. O servidor buscará os dados para RandomName
e RandomFact
em paralelo e fará o fluxo do HTML resultante para o navegador.
Incluindo Promises diretamente
Seção intitulada Incluindo Promises diretamenteVocê também pode incluir Promises diretamente no template. Em vez de bloquear o componente inteiro, as Promises serão resolvidas em paralelo e bloquearão apenas o trecho de código que vem depois delas.
Neste exemplo, Um nome
será mostrando enquanto personPromise
e factPromise
estão carregando.
Assim que personPromise
for resolvido, Um fato
aparecerá, e factPromise
será mostrada assim que seu carregamento for concluído.