WordPress lento é problema técnico, não do WordPress
O WordPress roda 43% da web. Se fosse inerentemente lento, metade da internet seria inutilizável. Quando um site WordPress é lento, o problema está na configuração, nos plugins, no tema ou na hospedagem — não no WordPress em si.
Vamos ao diagnóstico.
Passo 1: Medir antes de otimizar
Antes de mudar qualquer coisa, meça. Sem dados, você está adivinhando.
Ferramentas de medição
- Google PageSpeed Insights (pagespeed.web.dev): dados reais de usuários (CrUX) + análise Lighthouse.
- GTmetrix (gtmetrix.com): métricas detalhadas com waterfall de carregamento.
- WebPageTest (webpagetest.org): teste de múltiplas localizações com filmstrip visual.
O que medir
- TTFB (Time to First Byte): tempo até o servidor responder. Ideal: < 200ms.
- LCP (Largest Contentful Paint): tempo até o maior elemento visível. Ideal: < 2.5s.
- CLS (Cumulative Layout Shift): estabilidade visual. Ideal: < 0.1.
- INP (Interaction to Next Paint): responsividade. Ideal: < 200ms.
- Total page size: quanto pesa a página em KB/MB.
- Número de requisições: quantos arquivos o navegador precisa baixar.
Anote os valores iniciais. Após cada otimização, meça novamente para confirmar melhoria.
Passo 2: Diagnosticar a hospedagem
TTFB alto = problema de servidor
Se o TTFB está acima de 500ms, o problema é quase certamente a hospedagem.
Hospedagens compartilhadas baratas (planos de R$ 10-30/mês) colocam centenas de sites no mesmo servidor. Quando outro site tem pico de tráfego, o seu sofre.
Soluções por faixa de preço
- R$ 10-30/mês (compartilhada): adequada para sites com < 5.000 visitas/mês. Use cache agressivo.
- R$ 50-150/mês (VPS ou hospedagem WordPress gerenciada): adequada para 5.000-50.000 visitas. Exemplos: DigitalOcean, Vultr, Cloudways.
- R$ 200-500/mês (WordPress gerenciada premium): Kinsta, WP Engine, Flywheel. Cache integrado, CDN, otimizações automáticas.
Teste rápido
Desative todos os plugins e troque para o tema padrão (Twenty Twenty-Four). Meça o TTFB. Se ainda está alto, o problema é a hospedagem.
Passo 3: Auditar plugins
Plugins são a causa #1 de WordPress lento. Cada plugin adiciona código PHP, queries ao banco de dados e potencialmente JavaScript e CSS ao frontend.
Método de diagnóstico
- Desative todos os plugins.
- Ative um por um, medindo o TTFB a cada ativação.
- O plugin que causa o maior aumento de TTFB é o gargalo.
Plugins comumente problemáticos
- Page builders (Elementor, Divi, WPBakery): adicionam CSS e JS pesados. Considere usar o editor nativo (Gutenberg).
- Plugins de redes sociais: carregam scripts externos de múltiplas plataformas.
- Plugins de chat ao vivo: scripts pesados que carregam em todas as páginas.
- Plugins de segurança com firewall: processamento adicional em cada requisição.
- WooCommerce (sem cache): queries pesadas de banco de dados.
Regra prática
Se um plugin não é essencial para o funcionamento do site, desative. 20 plugins ativos é preocupante. 40+ é quase certamente um problema.
Passo 4: Otimizar imagens
Imagens são geralmente o maior peso de uma página. Uma foto de 3MB que poderia ser 150KB é desperdício puro.
Formato
- WebP: 25-34% menor que JPEG com qualidade equivalente. Suportado por todos os navegadores modernos.
- AVIF: ainda menor que WebP, mas suporte parcial.
- JPEG: fallback para navegadores antigos.
- PNG: apenas para imagens que precisam de transparência.
Dimensões
Não sirva uma imagem de 4000x3000px se ela é exibida em 800x600px. Gere tamanhos adequados:
// functions.php - adicionar tamanhos de imagem customizados
add_image_size('hero', 1200, 600, true);
add_image_size('card', 400, 300, true);
Lazy loading
Imagens abaixo da dobra devem usar lazy loading:
<img src="foto.webp" loading="lazy" width="800" height="600" alt="Descrição" />
O WordPress 5.5+ adiciona loading="lazy" automaticamente a todas as imagens. Certifique-se de que a imagem hero (acima da dobra) NÃO tem lazy loading.
Plugins de otimização
- ShortPixel: otimiza e converte para WebP automaticamente.
- Imagify: similar, com integração ao Elementor.
- Smush: versão gratuita razoável para otimização básica.
Passo 5: Implementar cache
Cache é a otimização com maior impacto em WordPress. Em vez de executar PHP e queries a cada visita, o servidor entrega um HTML estático pré-gerado.
Tipos de cache
Cache de página: armazena o HTML completo da página. Elimina processamento PHP e queries de banco de dados para visitantes não logados.
Cache de objeto: armazena resultados de queries do banco de dados na memória (Redis ou Memcached).
Cache de browser: instrui o navegador a armazenar assets estáticos localmente.
Plugins de cache
- LiteSpeed Cache: o melhor se sua hospedagem usa LiteSpeed (muitas usam).
- WP Super Cache: simples e confiável. Feito pela Automattic.
- W3 Total Cache: mais configurações, mais complexidade.
- WP Rocket (pago): o mais completo, com minificação, lazy loading e preload incluídos.
Configuração mínima
- Ative cache de página.
- Habilite compressão Gzip/Brotli.
- Configure expiração de cache do browser (1 ano para assets estáticos).
- Ative minificação de CSS e JavaScript.
- Combine arquivos CSS e JS quando possível.
Passo 6: Otimizar CSS e JavaScript
CSS não utilizado
O maior problema de page builders. Elementor carrega ~400KB de CSS em cada página, mesmo que apenas 20% seja usado naquela página específica.
Soluções:
- Use o editor nativo (Gutenberg) em vez de page builders.
- Se usar Elementor, ative “Improved CSS Loading” nas configurações experimentais.
- Use plugin de remoção de CSS não usado (PurifyCSS, mas com cuidado — pode remover CSS necessário).
JavaScript bloqueante
Scripts no <head> sem async ou defer bloqueiam a renderização:
<!-- Bloqueante (ruim) -->
<script src="script.js"></script>
<!-- Não bloqueante (bom) -->
<script src="script.js" defer></script>
Plugins de cache como WP Rocket e LiteSpeed Cache podem fazer isso automaticamente.
Fontes web
<!-- Preload das fontes críticas -->
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin />
Use font-display: swap para evitar texto invisível durante o carregamento da fonte.
Passo 7: CDN e otimizações avançadas
CDN (Content Delivery Network)
Uma CDN serve seus assets (imagens, CSS, JS) de servidores distribuídos globalmente, reduzindo a latência.
- Cloudflare (gratuito): CDN + DNS + segurança básica. Ative o modo “Rocket Loader” com cuidado.
- BunnyCDN: barato e rápido. Bom para sites brasileiros.
Database cleanup
Com o tempo, o banco de dados acumula lixo: revisões de posts, transients expirados, comentários spam, dados de plugins desinstalados.
-- Remover revisões de posts (cuidado, faça backup antes!)
DELETE FROM wp_posts WHERE post_type = 'revision';
-- Remover transients expirados
DELETE FROM wp_options WHERE option_name LIKE '%_transient_%';
-- Otimizar tabelas
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options;
Ou use plugins como WP-Optimize para fazer isso com interface gráfica.
Heartbeat API
A Heartbeat API do WordPress envia requisições AJAX a cada 15-60 segundos. Útil no admin, mas desnecessário no frontend:
// Desativar Heartbeat no frontend
add_action('init', function() {
if (!is_admin()) {
wp_deregister_script('heartbeat');
}
});
Checklist de performance WordPress
- TTFB abaixo de 200ms
- Cache de página ativo
- Imagens otimizadas e em WebP
- Lazy loading em imagens below the fold
- CSS e JS minificados
- Fontes com preload e font-display: swap
- CDN configurada
- Máximo 15-20 plugins ativos
- Banco de dados otimizado
- Sem page builder ou com CSS otimizado
Conclusão
WordPress lento tem solução. Na maioria dos casos, as três ações com maior impacto são: hospedagem adequada, cache de página e otimização de imagens. Juntas, costumam resolver 80% dos problemas de performance.
Meça, identifique o gargalo, otimize, meça novamente. Sem adivinhação, sem cargo cult — só dados e ação.