Corrigir o aviso do Lighthouse sobre eliminar recursos que bloqueiam a renderização

Livre-se dos recursos que bloqueiam a renderização e melhore os Core Web Vitals

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2024-11-27

'Eliminar recursos que bloqueiam a renderização' em resumo

Ao carregar qualquer página com recursos que bloqueiam a renderização, um navegador não pode iniciar o processo de renderização até que todos os elementos que estão causando isso sejam baixados e avaliados.

Isso quebra a regra de ouro do PageSpeed: 'sempre inicie a renderização o mais cedo possível'. Qualquer atraso na renderização da página faz com que a página carregue mais lentamente do que o necessário.

Corrija este aviso do Lighthouse removendo ou adiando esses recursos que bloqueiam a renderização.

Aprenda como corrigir 'Eliminar recursos que bloqueiam a renderização'

O que é o aviso 'Eliminate render-blocking resources' do Lighthouse?

Eliminar recursos que bloqueiam a renderização

O que causa o aviso Eliminate render-blocking resources no Lighthouse? O Lighthouse sinaliza páginas que têm um dos seguintes:

  • Uma tag script que está no head e não é adiada.
    Scripts no head da página bloqueiam a renderização por padrão se não tiverem o atributo defer ou async.
  • Uma folha de estilo vinculada que corresponde à mídia do dispositivo.
    Um <link rel="stylesheet"> bloqueará a renderização da página se não estiver desativado e corresponder à mídia do navegador. Por exemplo, <link rel="stylesheet" media="print"> não bloqueará a renderização em dispositivos desktop.

O aviso 'Eliminate render-blocking resources' impacta diretamente algumas métricas do Lighthouse. Na teoria, páginas com recursos que bloqueiam a renderização poderiam ainda carregar bem rápido. Na prática, muitas vezes não carregam. O excesso de recursos que bloqueiam a renderização muito provavelmente afetará diretamente métricas importantes do Lighthouse, como First Contentful Paint (FCP) e Largest Contentful Paint (LCP).

Um lembrete rápido - O que é renderização?

A renderização é um processo usado no desenvolvimento web que transforma o código do site nas páginas interativas que os usuários veem quando visitam um site. O termo geralmente se refere ao uso de códigos HTML, CSS e JavaScript. O processo é concluído por um mecanismo de renderização, o software usado por um navegador web para renderizar uma página da web.

O que causa 'recursos que bloqueiam a renderização'?

Os recursos que bloqueiam a renderização são sempre StyleSheets e JavaScripts no head da página. Isso significa que eles só podem ser adicionados pelo seu CMS, manualmente pelo seu desenvolvedor web ou por um plugin. Ao tentar encontrar a origem de um recurso que bloqueia a renderização, tente procurar nestes lugares:

  • O template Os arquivos de template do seu site são o primeiro lugar para procurar. Encontre o local onde o código <head> está localizado e procure por estilos e scripts codificados.
  • O CMS às vezes o próprio CMS exige alguns scripts (por exemplo, jQuery) para funcionar corretamente.
  • Plugins. Plugins são notórios por injetar estilos e scripts na página.

Como os 'recursos que bloqueiam a renderização' afetam o PageSpeed

Os recursos que bloqueiam a renderização impedem que a árvore de renderização seja gerada. Quando a árvore de renderização não foi construída, o navegador não iniciará a renderização. Isso significa que a página ficará completamente em branco até que todos os recursos que bloqueiam a renderização tenham sido baixados e avaliados. Isso impactará métricas como o First Contentful Paint e o Largest Contentful Paint.

    Como corrigir 'Eliminar recursos que bloqueiam a renderização'

    Para corrigir 'recursos que bloqueiam a renderização', você precisará garantir que esses recursos não bloqueiem mais a renderização. A maneira mais fácil é simplesmente remover esses recursos. Às vezes, recursos antigos e não utilizados ainda estão bloqueando a renderização da página. Se você não puder removê-los, deverá adiá-los.

    Adiando JavaScript

    O JavaScript pode ser adiado adicionando o atributo defer ou async à tag script.

    //javascript adiado
    <script defer src="script.js"></script>
    //javascript assíncrono
    <script async src="script.js"></script>
    

    Adiando StyleSheets

    Adiar stylesheets pode ser um pouco mais complicado. Quando uma folha de estilo é adiada, a página será renderizada sem os estilos primeiro. Então, quando os estilos forem carregados, o navegador aplicará a estilização causando todos os tipos de oscilações e mudanças de layout. É por isso que você precisará de CSS crítico e inline. O CSS crítico é uma coleção dos estilos necessários para renderizar a parte visível da página.

    <style>//CSS crítico aqui</style>
    <link rel="preload"
          href="css.css"
          type="text/css"
          as="style"
          onload="this.onload=null;this.rel='stylesheet';"/>

    Solução alternativa para 'eliminar recursos que bloqueiam a renderização'

    Às vezes não é possível eliminar esses recursos que bloqueiam a renderização. Você pode não ter acesso ao template ou o seu CMS pode exigir certos scripts. Existem algumas soluções alternativas para diminuir o impacto desses recursos que bloqueiam a renderização.

    • Minifique e comprima seus estilos e scripts.
      Minimize e comprima seus estilos e scripts atuais. Recursos menores têm menos impacto no desempenho de carregamento do que recursos maiores.
    • Divida arquivos grandes em vários arquivos.
      Dividir arquivos grandes em vários arquivos pode reduzir o tempo de carregamento dos recursos.
    • Descarregue recursos por página.
      Quando um recurso não pode ser removido de uma página, isso não significa que ele seja necessário em todas as páginas. Plugins do Wordpress, por exemplo, tendem a adicionar scripts e estilos a todas as páginas, mesmo que o plugin não esteja ativo naquela página.

    Your Lighthouse score is not the full picture.

    Lab tests run on fast hardware with a stable connection. I analyze what your actual visitors experience on real devices and real networks.

    Analyze Field Data
    Corrigir o aviso do Lighthouse sobre eliminar recursos que bloqueiam a renderizaçãoCore Web Vitals Corrigir o aviso do Lighthouse sobre eliminar recursos que bloqueiam a renderização