Pontuação Lighthouse do WordPress Travada em 50? Plugins de Cache Não Resolvem
Você instalou WP Rocket. Sua pontuação do Lighthouse subiu de 35 para 52. Você adicionou Autoptimize. 52 para 58. Você instalou Perfmatters. Agora você está executando TRÊS plugins de performance -- cada um adicionando seu próprio JavaScript -- para corrigir problemas de performance causados por outros plugins adicionando JavaScript. Viu a ironia?
Estive nesta situação exata mais vezes do que gostaria de admitir. Você passa um fim de semana inteiro ajustando configurações do WP Rocket, gerando CSS crítico, diferindo scripts, lazy loading de imagens, habilitando preload, configurando um CDN. Você executa o Lighthouse novamente. 54. Talvez 58 em um bom dia. Você verifica a concorrência -- eles estão em 90+. Você se pergunta o que está fazendo errado.
Aqui está a coisa: você não está fazendo nada errado. Você atingiu o teto de performance do WordPress. É real, está bem documentado, e nenhuma combinação de plugins de cache pode ultrapassar. O problema não é sua configuração. É a arquitetura.
Este artigo detalha exatamente por que o cache não pode consertar a performance do WordPress, o que está realmente causando suas baixas pontuações métrica por métrica, e como migramos um cliente real -- SleepDr -- de uma pontuação do Lighthouse de 35 para 94 mudando a arquitetura completamente.
Índice
- O Paradoxo do Plugin de Performance
- CSS Render-Blocking: Cache o Serve Mais Rápido, Não Menor
- JavaScript Bloat: jQuery e o Page Builder Tax
- Overhead de Query do Banco de Dados: O Problema da Primeira Requisição
- Server-Side Rendering: O Gargalo Estrutural do PHP
- Entendendo Sua Divisão de Pontuação do Lighthouse
- Estudo de Caso: Migração SleepDr -- WordPress para Next.js
- A Arquitetura Que Realmente Conserta Performance
- Quando a Migração Faz Sentido (E Quando Não)
- FAQ

O Paradoxo do Plugin de Performance
Deixe-me pintar um quadro que vejo todo mês. Um proprietário de site entra em contato porque seu site WordPress marca entre 35 e 55 no Lighthouse. Eles já instalaram alguma combinação desses plugins:
- WP Rocket ($59/ano) -- page caching, minificação de CSS/JS, lazy loading
- Autoptimize (gratuito) -- agregação de CSS/JS, CSS crítico
- Perfmatters ($24,95/ano) -- gerenciador de scripts, limpeza de banco de dados
- Asset CleanUp (gratuito) -- carregamento condicional de ativos
- Flying Scripts (gratuito) -- atraso na execução de JavaScript
São cinco plugins cujo único propósito é fazer o WordPress funcionar como deveria na caixa. Cada um adiciona seu próprio overhead de execução PHP. Cada um escreve suas próprias regras em .htaccess. Alguns entram em conflito uns com os outros de maneiras sutis que só aparecem sob carga no mundo real.
O melhor cenário? Você sai de 35 para talvez 65. Já vi equipes gastarem 40+ horas ajustando esses plugins e suas várias interações. Essa é uma semana de tempo de desenvolvedor -- facilmente $4.000-$8.000 em trabalho -- para ganhar 20-30 pontos do Lighthouse e ainda não atingir os limites de "bom" Core Web Vitals.
E aqui está o que ninguém fala sobre: essas páginas em cache apenas ajudam visitantes recorrentes. O primeiro acesso? Ainda é lento. Um crawl do Googlebot? Provavelmente está atingindo páginas não cacheadas. Seu tráfego mais importante -- novos visitantes da busca -- tem a pior experiência.
CSS Render-Blocking: Cache o Serve Mais Rápido, Não Menor
Esta é a primeira parede que você enfrentará, e é a que a maioria das pessoas não compreende.
Um tema típico do WordPress carrega entre 200KB e 800KB de CSS em cada página. Não estou exagerando. Aqui está o que contribui:
- Stylesheet do tema: 150-400KB (temas Divi, Avada e Elementor são os piores ofensores)
- Stylesheets de plugin: 50-200KB (formulários de contato, sliders, compartilhamento social, plugins de SEO)
- Google Fonts: 30-100KB (geralmente carregando 3-5 pesos de fonte que você não usa)
- Bibliotecas de ícones: 50-80KB (carregando todo o Font Awesome para 6 ícones)
Aqui está a estatística crítica: aproximadamente 70% desse CSS não é utilizado em qualquer página dada. Sua página inicial não precisa dos estilos do carrinho do WooCommerce. Sua postagem do blog não precisa do CSS do formulário de contato. Mas o WordPress carrega tudo, em todos os lugares, tudo de uma vez.
O que o WP Rocket faz sobre isso? Ele minifica o CSS (economiza talvez 10-15%), combina arquivos para reduzir requisições HTTP e gera CSS crítico para conteúdo acima da dobra. Isso é genuinamente útil. Mas o navegador ainda baixa todos os 400KB+. Ele ainda analisa tudo. O CSS não utilizado ainda contribui para atrasos de FCP.
O WP Rocket não pode fazer tree-shake do seu CSS. Ele não pode determinar quais estilos são necessários por página e remover o resto. Isso exigiria entender a relação entre seu HTML e CSS em tempo de construção -- o que é exatamente o que os frameworks modernos fazem.
Como Next.js + Tailwind Realmente Resolvem Isso
Com Next.js e Tailwind CSS, estilos não utilizados são removidos em tempo de construção. Não diferidos. Não minificados. Removidos completamente. O processo de construção verifica seus templates, identifica quais classes de utilitário são realmente utilizadas e gera um arquivo CSS contendo apenas esses estilos.
O resultado? Payload total de CSS: 15-40KB para um site inteiro. Não por página -- para o site inteiro. Isso não é uma melhoria marginal. É uma diferença de uma ordem de magnitude.
/* WordPress: carrega tudo */
/* theme.min.css: 387KB */
/* elementor-frontend.min.css: 142KB */
/* woocommerce.min.css: 98KB */
/* contact-form-7.min.css: 12KB */
/* Total: 639KB CSS, ~70% não utilizado em qualquer página */
/* Next.js + Tailwind: constrói apenas o que é utilizado */
/* globals.css: 22KB (site inteiro) */
/* CSS por página: 0KB adicional (tudo está no bundle purgado) */
JavaScript Bloat: jQuery e o Page Builder Tax
É aqui que TBT -- Total Blocking Time -- fica arruinado. E TBT é 30% da sua pontuação de performance do Lighthouse. Você literalmente não pode ir acima de 70 com TBT ruim.
WordPress envia jQuery em cada página. São 87KB minificados e comprimidos com gzip. Ele executa sincronamente na thread principal. Cada carregamento de página paga esse imposto, mesmo que nenhuma funcionalidade na página exija jQuery.
Mas jQuery é apenas a entrada. Aqui está o orçamento de JavaScript para um site típico do construtor de páginas do WordPress:
| Fonte | Tamanho (minificado + gzipped) | Tempo da Thread Principal |
|---|---|---|
| jQuery + jQuery Migrate | 87KB + 10KB | 150-300ms |
| Frontend do Elementor | 180-350KB | 200-500ms |
| WP Rocket (sim, realmente) | 15-25KB | 30-60ms |
| Plugin de slider | 80-150KB | 100-250ms |
| Analytics + rastreamento | 50-120KB | 80-200ms |
| Outros plugins | 50-200KB | 100-300ms |
| Total | 462KB - 855KB | 660ms - 1,610ms |
São 660ms a 1,6 segundos de bloqueio da thread principal apenas pela execução do JavaScript. O Lighthouse quer TBT abaixo de 200ms para uma boa pontuação. Abaixo de 600ms para "precisa melhorar". Você já está destruído antes mesmo de seu conteúdo atual ser renderizado.
O que os plugins de cache podem fazer? Eles podem minificar (economiza 5-10%), diferir execução (ajuda FCP mas TBT continua o mesmo porque o trabalho ainda acontece) e atrasar scripts até interação do usuário (o que quebra funcionalidade e cria uma experiência desagradável quando usuários clicam em algo e nada acontece por 500ms).
Next.js: Zero jQuery, Smart Code Splitting
Next.js não carrega jQuery. Ponto final. Não há equivalente. React lida com manipulação de DOM, e já está no bundle para interatividade. Mas aqui está o verdadeiro ganho: divisão automática de código.
Cada página carrega apenas o JavaScript de que precisa. Uma página "Sobre" estática pode enviar 30KB de JS no total. Sua página de formulário de reserva interativa carrega a biblioteca de formulário apenas nessa página. Importações dinâmicas significam que componentes pesados carregam sob demanda.
// Apenas carrega o calendário de reserva quando este componente é renderizado
import dynamic from 'next/dynamic'
const BookingCalendar = dynamic(() => import('../components/BookingCalendar'), {
loading: () => <div className="h-96 animate-pulse bg-gray-100 rounded" />,
ssr: false // Nem mesmo inclui no bundle do servidor
})
export default function BookingPage() {
return (
<main>
<h1>Agende Sua Consulta</h1>
<BookingCalendar />
</main>
)
}
Aquela flag ssr: false significa que o JavaScript do calendário nem mesmo existe no carregamento inicial da página. Os usuários veem um espaço reservado instantaneamente, depois o componente interativo é hidratado. TBT permanece mínimo.

Overhead de Query do Banco de Dados: O Problema da Primeira Requisição
Cada carregamento de página do WordPress ativa consultas de banco de dados. Não algumas poucas. Muitas.
Instalei Query Monitor no site de um cliente no ano passado -- uma configuração bastante padrão de WordPress + WooCommerce + Yoast. Aqui está o que um único carregamento de homepage gerou:
- Núcleo do WordPress: 8-12 consultas (opções, sessão do usuário, regras de reescrita)
- Yoast SEO: 15+ consultas (dados de meta, configurações de schema, migalhas de pão)
- WooCommerce: 20+ consultas (dados de produtos, carrinho, sessão)
- Opções de tema: 10-15 consultas (configurações do customizador, dados de widget)
- Renderização de menu: 5-8 consultas (itens de menu aninhados, meta)
- Widgets da barra lateral: 5-10 consultas por widget
Total: 63-80 consultas de banco de dados para um único carregamento de página. Em hospedagem compartilhada com um banco de dados MySQL que também serve 200 outros sites? Você pode ver para onde vai.
O cache de página do WP Rocket elimina isso -- para páginas cacheadas. Mas os caches expiram. Novas páginas não são cacheadas até a primeira visita. Páginas de carrinho do WooCommerce não podem ser cacheadas (são dinâmicas por usuário). Usuários administradores ignoram o cache. E o Googlebot geralmente acessa páginas que caíram do cache.
Cada requisição não cacheada paga o castigo completo do banco de dados.
Next.js ISR: HTML Pré-Renderizado, Zero Consultas de Banco de Dados no Tempo de Requisição
Com Next.js usando Incremental Static Regeneration (ISR), as páginas são pré-renderizadas para HTML estático em tempo de construção. Quando um usuário solicita uma página, o servidor retorna um arquivo HTML pré-construído. Sem execução PHP. Sem consultas de banco de dados. Sem computação.
// Isto é executado em tempo de construção, NÃO em tempo de requisição
export async function getStaticProps() {
const posts = await fetchFromWordPressAPI('/wp-json/wp/v2/posts')
return {
props: { posts },
revalidate: 3600 // Reconstrói esta página a cada hora
}
}
O revalidate: 3600 significa que a página é reconstruída em segundo plano a cada hora. Os usuários sempre obtêm HTML estático instantâneo. O conteúdo permanece atualizado. As consultas de banco de dados acontecem uma vez durante a regeneração, não em cada solicitação do visitante.
Quando fazemos desenvolvimento headless de CMS, o WordPress se torna o backend de conteúdo -- editores ainda usam a interface de administração familiar -- mas o frontend é completamente desacoplado. O banco de dados é acionado apenas durante compilações ou revalidação, não durante requisições de usuários.
Server-Side Rendering: O Gargalo Estrutural do PHP
Vamos falar sobre TTFB -- Time to First Byte. Este é o tempo que leva para o servidor começar a enviar uma resposta após uma requisição.
O WordPress gera cada página executando PHP. Mesmo uma postagem de blog simples requer:
- Apache/Nginx recebe requisição
- Processo PHP é gerado (ou reutilizado do pool)
- Bootstrap do WordPress carrega (~50 arquivos)
- Plugins ativos carregam (cada um: leituras de arquivo, consultas de banco de dados, registro de hooks)
- Funções do tema carregam
- A hierarquia de template é resolvida
- Consultas de banco de dados são executadas
- Template renderiza para HTML
- Resposta é enviada
Em hospedagem compartilhada (onde a maioria dos sites WordPress vivem -- SiteGround, Bluehost, GoDaddy), este processo leva 2-4 segundos apenas para TTFB. Antes de qualquer CSS, JavaScript ou imagem ser carregada. Seu usuário fica olhando para uma tela em branco por 2+ segundos.
Hospedagem WordPress gerenciada (Kinsta, WP Engine, Flywheel) reduz isto para 0,8-1,5s TTFB. Melhor. Ainda não é ótimo.
Next.js na Edge Network do Vercel? 50-200ms TTFB. Não é porque Vercel tem servidores mágicos. É porque não há nada a computar. O HTML já existe. O nó de borda mais próximo do usuário o serve diretamente. Sem PHP. Sem banco de dados. Sem renderização de template.
A lacuna de performance entre 2+ segundos TTFB e 100ms TTFB não é algo que você possa preencher com um plugin de cache.
Entendendo Sua Divisão de Pontuação do Lighthouse
Antes de olharmos o estudo de caso, vamos entender o que o Lighthouse realmente mede e por que o WordPress luta com cada métrica:
| Métrica | Peso | O que Mede | Problema do WordPress | Solução do Next.js |
|---|---|---|---|---|
| TBT | 30% | Bloqueio da thread principal por JS | jQuery + plugin JS = 600ms+ | Code splitting = <50ms |
| LCP | 25% | Elemento visível maior pintado | TTFB lento + CSS render-blocking | HTML pré-renderizado + CSS purgado |
| CLS | 25% | Mudanças de layout visual | Imagens lazy-loaded sem dimensões, anúncios dinâmicos | next/image com dimensionamento explícito |
| Speed Index | 10% | Completude visual ao longo do tempo | CSS pesado bloqueia renderização | CSS mínimo, HTML instantâneo |
| FCP | 10% | Primeira pintura de conteúdo | Recursos render-blocking | CSS crítico embutido, nada bloqueia |
TBT sozinho a 30% de peso significa que se você está atingindo 1.200ms+ de tempo de bloqueio (comum no WordPress), você está perdendo quase um terço da sua pontuação bem aí. Nenhuma quantidade de otimização de imagem ou cache pode compensar.
Estudo de Caso: Migração SleepDr -- WordPress para Next.js
SleepDr veio para nós com um problema que vi em dúzias de vezes. Eles são uma prática de saúde do sono com um site WordPress construído em um tema premium, executando WooCommerce para agendamento de consultas, Yoast para SEO, Elementor para construção de página, e -- você adivinhou -- WP Rocket, Autoptimize E Perfmatters para performance.
Três plugins de performance. Pontuação do Lighthouse: 35.
Aqui estão os números antes e depois:
| Métrica | WordPress (Antes) | Next.js (Depois) | Mudança |
|---|---|---|---|
| FCP | 4,2s | 1,1s | -74% |
| LCP | 6,8s | 1,8s | -74% |
| CLS | 0,28 | 0,01 | -96% |
| TBT | 1.200ms | 50ms | -96% |
| TTFB | 2,1s | 0,3s | -86% |
| Pontuação do Lighthouse | 35 | 94 | +169% |
Nenhuma combinação de plugin de cache poderia alcançar esses resultados. A arquitetura tinha que mudar. Deixe-me detalhar cada métrica.
FCP: 4,2s → 1,1s (-74%)
O que causou a pontuação do WordPress: O site WordPress tinha 2,1s TTFB (hospedagem compartilhada), seguido por 580KB de CSS render-blocking do Elementor, do tema, WooCommerce e seis folhas de estilo de plugin. O navegador não conseguia pintar nada até ter baixado e analisado todo esse CSS. FCP literalmente não conseguia começar até 4+ segundos após o clique.
O fix do Next.js: HTML pré-renderizado servido a partir da borda do Vercel (0,3s TTFB). CSS crítico embutido na <head> -- aproximadamente 4KB. O navegador pinta conteúdo quase imediatamente após receber o HTML. CSS total para o site inteiro: 28KB, carregado assincronamente após a primeira pintura.
LCP: 6,8s → 1,8s (-74%)
O que causou a pontuação do WordPress: O elemento de conteúdo mais importante era uma imagem de herói. No WordPress, ela foi carregada através do lazy loading do Elementor (que entrou em conflito com o lazy loading do WP Rocket -- sim, eles estavam se lutando). A imagem era um PNG de 2,4MB servido sem conversão de formato next-gen. LCP não conseguia se completar até que essa imagem massiva terminasse de ser baixada por uma conexão lenta com TTFB.
O fix do Next.js: next/image com conversão automática WebP/AVIF, srcset responsivo e carregamento com prioridade para imagens acima da dobra. A imagem do herói passou de PNG de 2,4MB para 85KB AVIF. Foi priorizada na sequência de carregamento -- sem lazy loading para conteúdo acima da dobra. Combinado com o TTFB rápido, LCP se completou em 1,8s.
CLS: 0,28 → 0,01 (-96%)
O que causou a pontuação do WordPress: Três culpados. Primeiro, imagens sem atributos de largura/altura explícitos (Elementor as dimensionava dinamicamente via CSS, causando reflow). Segundo, um banner de consentimento de cookie que se injetava no DOM após o carregamento da página, empurrando conteúdo para baixo. Terceiro, web fonts carregando com font-display: swap causando um reflow de texto visível. Um CLS de 0,28 é terrível -- Google considera qualquer coisa acima de 0,1 como "ruim".
O fix do Next.js: next/image impõe largura e altura, reservando espaço antes das imagens carregarem. O banner de cookie foi posicionado como uma sobreposição fixa em vez de conteúdo inline. Fontes foram auto-hospedadas com font-display: optional e precarregadas. O resultado: 0,01 CLS. Efetivamente zero mudança de layout.
TBT: 1.200ms → 50ms (-96%)
O que causou a pontuação do WordPress: jQuery (87KB + 150ms de execução). Frontend JS do Elementor (280KB + 400ms). Fragmentos de carrinho do WooCommerce (35KB + 80ms). JavaScript de três plugins de performance (combinado 45KB + 90ms). Analytics e rastreamento (60KB + 120ms). Vários scripts de plugin (100KB + 200ms). Total: mais de um segundo de bloqueio da thread principal.
O fix do Next.js: Zero jQuery. Zero page builder JS. Importações dinâmicas para o widget de agendamento de consultas. Analytics carregado via next/script com strategy="lazyOnload". JavaScript total na homepage: 62KB. TBT: 50ms. Essa é uma redução de 96%.
TTFB: 2,1s → 0,3s (-86%)
O que causou a pontuação do WordPress: SleepDr estava em hospedagem compartilhada SiteGround. Cada requisição não cacheada acionava bootstrap do WordPress, carregamento de plugin, 60+ consultas de banco de dados e renderização de template PHP. Mesmo com o cache de página do WP Rocket, a invalidação de cache acontecia frequentemente devido à dinâmica do carrinho do WooCommerce. TTFB médio para usuários reais: 2,1 segundos.
O fix do Next.js: Páginas estáticas implantadas na rede de borda global do Vercel. ISR lida com atualizações de conteúdo -- páginas se regeneram em segundo plano a cada 30 minutos. Requisições de usuário sempre atingem HTML pré-construído no nó de borda mais próximo. TTFB caiu para 0,3s média, com algumas regiões vendo sub-100ms.
A Arquitetura Que Realmente Conserta Performance
A migração do SleepDr usou o que chamamos de padrão WordPress headless. O WordPress continua como o CMS -- a equipe do SleepDr ainda faz login em wp-admin, escreve conteúdo em Gutenberg, gerencia seus tipos de consulta no WooCommerce. Nada mudou para eles no lado de gerenciamento de conteúdo.
Mas o frontend é inteiramente Next.js. O processo de construção obtém conteúdo do WordPress via a REST API, gera páginas estáticas e implanta no Vercel. Editores de conteúdo publicam no WordPress, um webhook aciona uma revalidação, e a página atualizada está ao vivo em menos de 30 segundos.
Para equipes considerando uma abordagem similar, Astro é outra opção que vale a pena avaliar -- especialmente para sites com muito conteúdo e interatividade mínima. Astro envia zero JavaScript por padrão, o que pode levar pontuações do Lighthouse ainda mais altas.
A ideia-chave: não otimizamos o WordPress. Substituímos a parte que era lenta (a renderização PHP e entrega de frontend) enquanto mantemos a parte que funciona bem (gerenciamento de conteúdo).
Quando a Migração Faz Sentido (E Quando Não)
Não vou dizer que cada site WordPress deve migrar para Next.js. Isso é desonesto. Aqui está minha avaliação honesta:
A migração faz sentido quando:
- Suas pontuações do Lighthouse estão presas abaixo de 60 apesar dos esforços de otimização
- Performance impacta diretamente a receita (e-commerce, geração de leads, sites de marketing de SaaS)
- Você está pagando $200+/mês de hospedagem WordPress gerenciada tentando obter velocidade aceitável
- Sua equipe de desenvolvimento está confortável com React/JavaScript
- Classificações de SEO estão sofrendo com falhas de Core Web Vitals
A migração não faz sentido quando:
- Você é um blog pessoal ou um pequeno site de brochura (o investimento não compensará)
- Sua equipe de conteúdo depende fortemente de plugins específicos do WordPress sem equivalente de API
- Você está feliz em 60-70 Lighthouse e seus Core Web Vitals passam
- Seu orçamento é inferior a $15.000 para a migração
Para sites onde a migração faz sentido, o investimento típico varia de $15.000-$50.000+ dependendo da complexidade, número de templates e funcionalidade personalizada. Detalhamos nossa abordagem e estruturas de projeto típicas em nossa página de preços.
O cálculo de ROI é direto: se a performance ruim lhe custa X em conversões perdidas por mês, e a migração custa Y, você conhece seu período de payback. Para SleepDr, a velocidade de página melhorada contribuiu para um aumento de 34% nas reservas de consultas no primeiro trimestre.
FAQ
O WP Rocket realmente não pode consertar minha pontuação do WordPress Lighthouse?
WP Rocket é genuinamente um dos melhores plugins de cache do WordPress disponíveis. Ele faz tudo o que uma camada de cache pode fazer -- page caching, minificação, lazy loading, integração com CDN, geração de CSS crítico. Mas ele opera dentro das restrições arquitetônicas do WordPress. Se sua pontuação está abaixo de 50, o WP Rocket tipicamente pode levá-lo para 55-65. Ir acima de 80 consistentemente requer remover o CSS render-blocking, dependência de jQuery e overhead de renderização PHP que o WP Rocket simplesmente não consegue eliminar. Ele otimiza entrega. Ele não pode reestruturar a arquitetura.
Qual pontuação do Lighthouse o WordPress pode realistically alcançar com plugins de cache?
Com uma configuração bem otimizada -- tema leve, plugins mínimos, WP Rocket totalmente configurado, hospedagem gerenciada como Kinsta ou WP Engine -- você pode realistically atingir 65-75 no Lighthouse móvel. As pontuações de desktop serão maiores (80-90) porque o dispositivo de teste tem mais poder de processamento. Ir acima de 80 no móvel consistentemente requer ou uma configuração WordPress extremamente mínima (quase nenhum plugin, tema customizado) ou uma mudança de arquitetura. Sites com page builders como Elementor ou Divi tipicamente maxam em 50-65.
Quanto custa migrar do WordPress para Next.js?
Os custos variam significativamente com base na complexidade do site. Um site de brochura simples (5-15 páginas, blog, formulário de contato) custa $15.000-$25.000. Um site de complexidade média com custom post types, múltiplos templates e integrações custa $25.000-$40.000. E-commerce ou aplicações web complexas com contas de usuário, dados dinâmicos e integrações de terceiros começam em $40.000+. Estas são as taxas de mercado de 2025 para agências com experiência headless comprovada. Você pode nos contatar para uma estimativa específica baseada em seu site.
Headless WordPress significa que minha equipe de conteúdo precisa aprender novas ferramentas?
Não. Esse é o ponto inteiro da abordagem headless. Sua equipe de conteúdo continua usando wp-admin, Gutenberg, ACF ou o que quer que estejam acostumados. A única mudança visível é que eles podem precisar esperar 30-60 segundos para que atualizações de conteúdo apareçam no site ao vivo (devido à revalidação ISR) em vez de ver mudanças instantaneamente. Alguns times acham isso praticamente imperceptível. A experiência editorial permanece virtualmente idêntica.
Qual é a diferença entre TBT e FCP, e por que ambos importam?
FCP (First Contentful Paint) mede quando o usuário vê algo -- qualquer conteúdo. TBT (Total Blocking Time) mede quanto tempo a thread principal é bloqueada pela execução de JavaScript entre FCP e Time to Interactive. Você pode ter um FCP decente mas TBT terrível, significando que usuários veem conteúdo rapidamente mas não conseguem interagir com ele. Isto é comum em sites WordPress onde HTML renderiza a partir do cache mas então 800KB+ de JavaScript são executados. Ambas as métricas importam porque juntas representam 40% da sua pontuação do Lighthouse (TBT em 30%, FCP em 10%).
Migrar para Next.js prejudicará meus rankings de SEO temporariamente?
Se feito corretamente, não. A chave é manter estruturas de URL, implementar 301 redirects adequados para qualquer URL que mude, preservar todos os metadados e garantir que o XML sitemap está correto. Tipicamente vemos um período de estabilização breve de 1-2 semanas onde os rankings flutuam ligeiramente, seguido por melhorias enquanto Google reconhece o melhor Core Web Vitals. SleepDr não viu quedas de ranking durante migração e ganhou posições dentro de 6 semanas. O risco vem de migrações descuidadas -- redirects quebrados, páginas ausentes, estruturas de URL alteradas sem redirects.
Posso usar Astro em vez de Next.js para a migração?
Absolutamente. Astro é uma escolha excelente para sites com muito conteúdo e interatividade limitada. Astro envia zero JavaScript por padrão e apenas hidrata componentes interativos -- o que eles chamam de "arquitetura de ilhas". Para um site como um blog, site de documentação ou site de marketing onde conteúdo é primário, Astro pode alcançar pontuações do Lighthouse ainda melhores que Next.js. Recomendamos Next.js quando você precisa de interatividade significativa no lado do cliente (dashboards, sistemas de reserva, e-commerce) e Astro quando conteúdo é primário.
A melhoria na pontuação do Lighthouse vale o investimento?
Depende inteiramente do que seu site faz. Para um blog pessoal, provavelmente não. Para um negócio onde tráfego da busca orgânica gera receita, a matemática é convincente. Google confirmou Core Web Vitals como um fator de ranking. Estudos de 2024-2025 mostram que cada melhoria de 100ms em LCP se correlaciona com um aumento de 1,1% na taxa de conversão para sites de e-commerce. Se seu site gera $50.000/mês em receita e uma melhoria de conversão de 10-15% adiciona $5.000-$7.500/mês, uma migração de $30.000 se paga em 4-6 meses. Execute seus próprios números -- a resposta é sempre específica para seu negócio.