WooCommercePerformanceSEO
13 min de leitura Março 2025 Edinaldo Xavier

Core Web Vitals no WooCommerce: guia prático completo de otimização

LCP, INP e CLS — diagnóstico e correção específicos para WooCommerce. Do servidor à imagem hero, do plugin de cache ao tema: um roteiro completo para sair da zona vermelha do Search Console.

Por que WooCommerce tem dificuldade com Core Web Vitals

WooCommerce roda sobre WordPress, que roda sobre PHP, que por padrão não tem nenhum mecanismo de cache de página inteira. Cada requisição gera uma nova execução PHP, consultas ao banco de dados, e resposta dinâmica. Sem otimização, uma loja WooCommerce entrega HTML em 800ms a 2s de TTFB — tempo suficiente para condenar o LCP.

Além disso, o ecossistema de plugins do WordPress incentiva a instalação de extensões que cada uma adiciona seu próprio JavaScript, CSS, e às vezes requisições AJAX adicionais. O resultado é uma loja carregando 3MB a 6MB de recursos em cada pageview.

Meta LCP
≤ 2.5s
Mais difícil de atingir sem cache de página. TTFB alto é o principal culpado.
Meta INP
≤ 200ms
Impactado por JavaScript de plugins de chat, slider e popup rodando na thread principal.
Meta CLS
≤ 0.1
Frequentemente violado por banners de cookies sem tamanho definido e imagens sem aspect-ratio.
Benchmark TTFB — WooCommerce · mesmo tema · mesmo catálogo · 500 produtos
Shared
1.8s
VPS
1.1s
Cloud Gerenc.
480ms
Cloud + Redis
210ms
TTFB médio (Time to First Byte) por tipo de hospedagem — WooCommerce 8.x sem cache de página

Otimizando LCP no WooCommerce

O LCP em WooCommerce tem dois problemas distintos que precisam ser resolvidos em ordem: primeiro o servidor (TTFB), depois os recursos (imagem/font).

Passo 1 — Cache de página inteira

Sem cache de página, cada visitante espera o PHP gerar o HTML do zero. Com cache, o primeiro visitante espera, e todos os outros recebem o HTML já pronto em milissegundos do disco ou memória. Isso sozinho pode reduzir o LCP de 4s para 1.8s.

Opções por ordem de eficácia:

  • Cache no servidor (Nginx/Redis) — mais rápido, requer acesso ao servidor. Use FastCGI Cache no Nginx ou Redis Object Cache + Full Page Cache configurado via nginx.conf
  • WP Rocket — plugin pago (~$59/ano), melhor opção para quem não tem acesso ao servidor. Inclui cache de página, minificação, lazy load e preload
  • LiteSpeed Cache — gratuito, excelente se a hospedagem usa LiteSpeed. Rivaliza com WP Rocket em hospedagens compatíveis
  • W3 Total Cache + CDN — gratuito, mas configuração complexa. Erros de config podem piorar performance
⚠️

Páginas não cacheáveis: checkout, cart e my-account NUNCA devem ser cacheadas. Todo bom plugin de cache exclui essas páginas automaticamente. Verifique se a exclusão está ativa antes de ativar o cache em produção.

Passo 2 — Hospedagem adequada para WooCommerce

Hospedagem compartilhada genérica é incompatível com lojas WooCommerce acima de 200 pedidos/mês. O TTFB em shared hosting costuma ficar entre 1.2s e 3s — inatingível para LCP ≤2.5s mesmo com cache.

Tipo de hospedagemTTFB típicoAdequado para
Shared hosting genérica1.2s – 3sSites institucionais, blogs (não e-commerce)
WordPress gerenciado (WP Engine, Kinsta)200ms – 600msLojas pequenas a médias com bom custo-benefício
VPS com stack otimizada (Nginx + Redis + PHP-FPM)80ms – 250msLojas médias a grandes com equipe técnica
Cloud dedicada (AWS/GCP + Cloudflare)40ms – 120msLojas grandes com alto tráfego

Passo 3 — Imagem LCP otimizada

Identifique o elemento LCP no Chrome DevTools (aba Performance → marcador LCP → clique para ver o elemento). Geralmente é a imagem de destaque do produto ou o banner hero. Para essa imagem específica:

<!-- Imagem LCP: use fetchpriority e preload -->
<link rel="preload" as="image" href="banner-hero.webp"
  imagesrcset="banner-hero-400.webp 400w, banner-hero-800.webp 800w, banner-hero.webp 1200w"
  imagesizes="100vw"/>

<img src="banner-hero.webp"
  srcset="banner-hero-400.webp 400w, banner-hero-800.webp 800w, banner-hero.webp 1200w"
  sizes="100vw"
  fetchpriority="high"
  loading="eager"
  width="1200" height="600"
  alt="Banner principal da loja"/>

Atenção: a imagem LCP NUNCA deve ter loading="lazy". Lazy load atrasa o carregamento e é a causa mais comum de LCP alto em lojas WooCommerce com temas que aplicam lazy load globalmente.

Melhorando INP no WooCommerce

INP (Interaction to Next Paint) mede a responsividade do navegador a todas as interações do usuário — cliques, teclado, toque. No WooCommerce, as principais fontes de INP alto são scripts de terceiros bloqueando a main thread.

Identificando scripts pesados

Abra o Chrome DevTools → aba Performance → grave 5 segundos interagindo com a página. Procure "Long Tasks" (barras vermelhas acima de 50ms) na thread principal. Cada Long Task é um candidato a causa do INP alto.

Scripts mais frequentemente responsáveis por INP alto em WooCommerce:

  • Plugins de chat (Tidio, Zendesk, Crisp) — carregam 200-400KB de JS na thread principal
  • Pixel do Facebook/Meta — especialmente sem carregamento diferido
  • Plugins de slider (Revolution Slider, Slick) — re-calculam layout em cada resize
  • Google Tag Manager com tags mal configuradas — cada tag adiciona latência

Diferindo scripts de terceiros

// wp-content/themes/seu-tema/functions.php
// Adicionar defer/async em scripts não-críticos
add_filter('script_loader_tag', function($tag, $handle, $src) {
    $defer_scripts = [
        'tidio-chat',
        'facebook-pixel',
        'google-tag-manager',
    ];
    if (in_array($handle, $defer_scripts)) {
        return str_replace(' src=', ' defer src=', $tag);
    }
    return $tag;
}, 10, 3);
ℹ️

Plugin recomendado: Asset CleanUp Pro permite desativar scripts e estilos por tipo de página — desativar scripts de checkout na homepage e vice-versa. Essa granularidade é o passo mais eficaz para INP em WooCommerce.

Eliminando CLS no WooCommerce

CLS (Cumulative Layout Shift) penaliza movimentos inesperados de elementos na página. No WooCommerce, há quatro causas clássicas:

1. Banner de cookies sem altura reservada

/* Reservar espaço para o banner antes de ele carregar */
.cookie-banner-placeholder {
  min-height: 72px; /* altura estimada do banner */
}
/* Ou usar position: fixed para o banner não empurrar conteúdo */
.cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 9999;
}

2. Imagens de produto sem aspect-ratio

/* Sempre defina width e height nos elementos img,
   ou use aspect-ratio no CSS para reservar o espaço */
.woocommerce-product-gallery__image img {
  aspect-ratio: 1 / 1; /* quadrado padrão de produto */
  width: 100%;
  height: auto;
}

.woocommerce ul.products li.product a img {
  aspect-ratio: 1 / 1;
  width: 100%;
  height: auto;
  object-fit: cover;
}

3. Web fonts causando FOUT/FOIT

Fonts carregando tarde causam layout shift porque o fallback tem métricas diferentes (largura, altura de linha) da fonte final. Solução: preconectar ao Google Fonts + usar font-display: swap com override de métricas.

/* Preload da fonte principal */
<link rel="preload" href="/wp-content/themes/tema/fonts/principal.woff2"
  as="font" type="font/woff2" crossorigin/>

/* CSS — override de métricas para reduzir CLS */
@font-face {
  font-family: 'MinhaFonte';
  src: url('/fonts/minhafonte.woff2') format('woff2');
  font-display: swap;
  size-adjust: 102%; /* ajustar até minimizar shift */
  ascent-override: 90%;
}

4. Ads e iframes sem tamanho definido

Qualquer iframe ou widget de ad sem width e height explícitos causará CLS quando carregar. Se o tamanho não é previsível, use um placeholder com a altura mínima esperada.

Stack de plugins para performance

Cache

WP Rocket

Melhor custo-benefício para lojas sem acesso ao servidor. Cache de página, minificação, preload e lazy load em um único plugin.

Imagens

Imagify / ShortPixel

Conversão automática para WebP/AVIF + compressão com qualidade configurável. Integra com WP Rocket para lazy load inteligente.

Scripts

Asset CleanUp Pro

Controle granular de quais CSS e JS carregam em cada tipo de página. Essencial para INP em lojas com muitos plugins.

CDN

Cloudflare (gratuito)

CDN global, HTTPS automático, cache de assets estáticos. O plano gratuito já resolve a maioria dos casos de TTFB alto por latência geográfica.

Resultado típico: aplicando cache de página + imagens WebP + defer de scripts third-party + Cloudflare, lojas WooCommerce saem de LCP 4-6s para 1.8-2.4s em 90% dos casos, sem alterar código de tema ou plugins.

Monitoramento contínuo

Performance não é uma tarefa única — cada plugin instalado, cada imagem adicionada, cada promoção com script de countdown pode degradar as métricas. Configure monitoramento que avise antes do Google penalizar.

  • Google Search Console → Core Web Vitals → ativar alertas por email para mudanças de status
  • PageSpeed Insights API — integre ao seu CI/CD para medir performance a cada deploy
  • Uptime Robot (gratuito) — monitore TTFB e disponibilidade da loja 24/7
  • SpeedCurve (pago) — monitoramento de LCP/INP/CLS em campo com alertas configuráveis

WooCommerce na zona vermelha do Search Console?

Fazemos diagnóstico completo de Core Web Vitals para lojas WooCommerce e entregamos um plano de ação priorizado com estimativa de impacto para cada correção.

Sua loja WooCommerce merece Core Web Vitals no verde

Diagnóstico + plano de ação + implementação. Saímos da zona vermelha do Search Console para o verde em até 30 dias ou seu dinheiro de volta.

📊

Dados de campo reais

Trabalhamos com CrUX data — métricas reais dos seus usuários, não laboratório.

LCP ≤ 2.5s garantido

Meta clara e mensurável. Não entregamos "melhorias parciais" e chamamos de sucesso.

🔄

Monitoramento pós-otimização

30 dias de acompanhamento após a implementação para garantir estabilidade.