Performance
LCP lento: como encontrar o elemento responsável e corrigir a cadeia crítica
Diagnostique Largest Contentful Paint passo a passo, da resposta do servidor à descoberta, transferência e renderização do elemento principal.
Leitura executiva
Principais conclusões
- O elemento de LCP pode mudar entre dispositivos e visitas.
- Decomponha o tempo antes de escolher a correção.
- Descubra o recurso cedo e priorize somente o candidato correto.
- Não use lazy-loading no elemento acima da dobra que determina o LCP.
Largest Contentful Paint (LCP) mede quando o maior elemento de conteúdo visível termina de renderizar. Corrigir a métrica exige mais do que “otimizar imagens”: é preciso identificar o elemento medido e descobrir em qual etapa o tempo está sendo gasto.
O limite recomendado é de 2,5 segundos no percentil 75 das visitas. Use campo e laboratório em conjunto: o primeiro confirma alcance; o segundo expõe a cadeia crítica.
Identifique o elemento de LCP
O candidato pode ser:
- imagem hero;
- imagem dentro de um carrossel;
- poster de vídeo;
- bloco de texto;
- imagem de fundo compatível com a medição;
- outro elemento grande no viewport inicial.
O elemento pode mudar entre mobile e desktop porque layout, recorte, texto e recursos são diferentes. Também pode mudar depois de um teste A/B, consentimento, personalização ou falha de carregamento.
Use o painel de Performance do Chrome, PageSpeed Insights ou instrumentação com web-vitals para registrar elemento e URL do recurso quando disponíveis. Não assuma que a imagem visualmente mais chamativa foi a candidata medida.
Decomponha o tempo do LCP
O tempo pode ser pensado em quatro partes.
Tempo até o primeiro byte
Inclui navegação, conexão, processamento do servidor e início da resposta do documento. Se o HTML começa tarde, todos os recursos descobertos a partir dele também começam tarde.
Investigue:
- redirecionamentos;
- ausência de cache adequado;
- renderização de servidor lenta;
- consulta de dados bloqueante;
- distância geográfica;
- cold starts;
- sobrecarga de middleware.
Atraso de descoberta do recurso
É o intervalo entre receber o HTML e o navegador descobrir o recurso de LCP. O atraso cresce quando a imagem:
- é inserida por JavaScript;
- depende de um carrossel hidratado;
- aparece apenas em CSS carregado tarde;
- usa atributo que impede prioridade adequada;
- fica atrás de uma chamada de API do cliente.
O melhor cenário é o candidato principal estar explícito no HTML inicial.
Duração da transferência
Depois de descoberto, o recurso precisa ser baixado. Peso, formato, dimensões, cache, CDN e conexão afetam essa etapa.
Atraso de renderização
O arquivo pode estar disponível e ainda não aparecer porque CSS, fontes, JavaScript ou trabalho da thread principal impedem o paint. Nesse caso, comprimir mais a imagem resolve apenas uma parte pequena.
Corrija o documento antes de acelerar o recurso
Um TTFB alto desloca toda a cascata. Antes de adicionar preloads, verifique se a página pode:
- eliminar redirecionamento de entrada;
- usar cache de página ou de dados;
- servir conteúdo estático quando apropriado;
- aproximar conteúdo do usuário com CDN;
- executar buscas independentes em paralelo;
- adiar trabalho que não é necessário para o HTML inicial.
Meça também o efeito sobre personalização e atualização. Cache incorreto pode servir dados obsoletos ou privados.
Faça o navegador descobrir o candidato cedo
Renderize a primeira imagem do hero no HTML. Use srcset e sizes para que o navegador escolha uma variante adequada:
<img
src="/hero-1280.webp"
srcset="/hero-640.webp 640w, /hero-1280.webp 1280w"
sizes="100vw"
width="1280"
height="720"
alt="Diagnóstico priorizado de um website"
fetchpriority="high"
>
fetchpriority="high" pode ajudar a sinalizar importância, mas use-o apenas no candidato provável. Marcar várias imagens como alta prioridade reduz o valor do sinal.
Para imagens descobertas por CSS ou outros caminhos tardios, um preload pode ser apropriado. Confirme no waterfall que ele antecipa a requisição e que a mesma URL não é baixada duas vezes por incompatibilidade de atributos.
Não aplique lazy-loading ao LCP acima da dobra
loading="lazy" adia recursos considerados fora ou perto do viewport. No candidato de LCP visível no carregamento, esse adiamento costuma ser contraproducente.
Mantenha lazy-loading para imagens abaixo da dobra. Verifique variações responsivas: uma imagem que está abaixo da dobra no desktop pode se tornar candidata no mobile.
Sirva o arquivo certo
Reduza bytes sem destruir qualidade:
- gere dimensões próximas do espaço renderizado;
- use formatos modernos compatíveis com o projeto;
- comprima com inspeção visual;
- evite baixar imagem desktop para um viewport pequeno;
- configure cache duradouro para arquivos versionados;
- remova metadata desnecessária;
- não use GIF pesado quando vídeo ou animação vetorial for mais adequado.
O objetivo não é atingir o menor arquivo possível, mas equilibrar qualidade, custo de decodificação e transferência.
Remova bloqueios de renderização
Se o candidato é texto, fontes e CSS ganham importância. Garanta que estilos críticos cheguem cedo, evite folhas enormes bloqueando a primeira pintura e revise a estratégia de fontes.
Se JavaScript ocupa a thread principal durante o momento em que o recurso fica pronto, reduza trabalho inicial:
- renderize conteúdo no servidor;
- divida componentes não críticos;
- adie terceiros;
- evite hidratar áreas estáticas;
- reduza efeitos que recalculam layout no início.
Carrosséis exigem atenção especial
Carrosséis frequentemente escondem a primeira imagem atrás de JavaScript e carregam todos os slides com prioridade semelhante.
Uma implementação mais robusta:
- renderiza o primeiro slide no HTML;
- prioriza apenas sua imagem;
- reserva dimensões;
- carrega slides seguintes com prioridade menor;
- mantém controles acessíveis;
- não troca automaticamente o candidato antes do carregamento estabilizar.
Considere se o carrossel é necessário. Uma única mensagem principal costuma ser mais simples para performance e clareza.
Valide a correção
Repita o teste sob condições comparáveis e registre:
- elemento de LCP;
- URL do recurso;
- TTFB;
- início e fim da requisição;
- momento de renderização;
- bytes transferidos;
- tarefas longas próximas ao paint.
Teste páginas do mesmo template, não apenas o melhor caso. Depois acompanhe dados de campo e métricas de negócio sem presumir causalidade imediata.
Exemplo de tarefa pronta
Observação: no mobile, a imagem principal de produto é o LCP e começa a baixar somente após hidratação do carrossel. Ação: renderizar o primeiro slide no servidor com
srcset, dimensões e prioridade alta; manter os demais slides sob demanda. Aceite: a imagem correta aparece sem JavaScript, não há download duplicado e o LCP de laboratório melhora na mediana de cinco execuções.
LCP lento é uma cadeia, não um arquivo. Quando você decompõe o tempo, a recomendação deixa de ser genérica e passa a atacar o componente que realmente domina a experiência.
Respostas diretas
Perguntas frequentes
Qual é um bom LCP?
A recomendação atual do Core Web Vitals é LCP de até 2,5 segundos no percentil 75 das visitas, separado entre mobile e desktop.
Preload sempre melhora LCP?
Não. Ele ajuda quando o recurso crítico seria descoberto tarde. Preloads excessivos competem por banda e podem piorar outros carregamentos.
Uma imagem comprimida resolve LCP?
Somente quando transferência é parte relevante do atraso. TTFB alto, descoberta tardia, CSS bloqueante ou renderização no cliente podem continuar dominando a métrica.