Como corrigir o checkout do WooCommerce lento
O que é o checkout do WooCommerce lento?
O checkout é a página de maior valor de uma loja: é onde a venda se concretiza. Quando está ‘lento’, o formulário demora a aparecer, o botão de finalizar trava por segundos, ou a página recarrega devagar a cada mudança de endereço ou frete. Cada segundo a mais de espera derruba a conversão. A lentidão costuma vir de requisições AJAX desnecessárias, plugins que carregam scripts pesados no checkout, ou um banco de dados sobrecarregado.
Como identificar
- A página de checkout demora vários segundos para exibir o formulário de cobrança.
- O botão ‘Finalizar compra’ fica girando muito tempo antes de processar o pedido.
- A cada mudança de endereço ou método de frete a página recalcula lentamente e trava a tela.
- Ferramentas como o PageSpeed ou o painel de rede (F12) mostram a chamada ‘?wc-ajax=get_refreshed_fragments’ levando segundos em todas as páginas.
Antes de começar: Faça backup antes de limpar a tabela wp_options ou desativar plugins em uma loja no ar, e nunca cacheie a página de checkout inteira: ela precisa ser dinâmica. Teste cada otimização em staging para não quebrar o fluxo de pagamento.
Como prevenir
- Mantenha cart-fragments restrito às páginas de loja e nunca cacheie a página de checkout inteira
- Monitore a tabela wp_options e o tempo de resposta do checkout com o Query Monitor após cada novo plugin
- Use OPcache, cache de objeto persistente e PHP atualizado, e cacheie cotações de frete por alguns minutos
Causa
- Cart fragments do WooCommerce disparando AJAX (get_refreshed_fragments) em toda página do site, sobrecarregando o servidor.
- Plugins pesados (de checkout, frete por transportadora, antifraude) executando chamadas externas lentas durante a finalização.
- Tabela wp_options inchada com muitos registros em autoload, deixando cada requisição do checkout lenta.
- Cálculo de frete por API de transportadora a cada recarregamento do checkout, sem cache da cotação.
- Servidor com PHP desatualizado, sem OPcache ou sem cache de objeto persistente (Redis/Memcached) para o WooCommerce.
Como resolver
- Limite o cart fragments às páginas de loja: o script de cart-fragments dispara AJAX em todas as páginas para atualizar o mini-carrinho. Restrinja-o às páginas de loja, carrinho e checkout para aliviar o servidor (veja o código abaixo).
- Identifique plugins lentos no checkout: use o Query Monitor para ver, na página de checkout, quais plugins consomem mais tempo e fazem chamadas externas. Desative temporariamente os mais pesados e meça a diferença.
- Limpe o autoload da wp_options: audite a tabela wp_options e reduza os dados em autoload (transients órfãos e opções grandes de plugins removidos). Uma wp_options inchada deixa todo o checkout lento.
SELECT SUM(LENGTH(option_value)) AS autoload_bytes FROM wp_options WHERE autoload = 'yes'; - Ative cache de objeto e OPcache: habilite o OPcache no PHP e um cache de objeto persistente (Redis ou Memcached). O WooCommerce faz muitas consultas repetidas no checkout que o cache de objeto resolve em memória.
- Cacheie a cotação de frete: se o frete é calculado por API de transportadora, use um plugin ou ajuste que armazene a cotação por alguns minutos, em vez de consultar a transportadora a cada recarregamento do checkout.
PHP
// functions.php do tema filho — carrega o cart-fragments (AJAX do mini-carrinho)
// apenas nas paginas de loja, carrinho e checkout, e nao no site inteiro
add_action( 'wp_enqueue_scripts', function () {
if ( function_exists( 'is_woocommerce' ) ) {
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
wp_dequeue_script( 'wc-cart-fragments' );
}
}
}, 99 );
Perguntas frequentes
Por que o WooCommerce deixa o site lento mesmo fora do checkout?
O script cart-fragments dispara uma chamada AJAX (get_refreshed_fragments) em toda página para atualizar o mini-carrinho. Restringindo esse script às páginas de loja, carrinho e checkout, você corta requisições desnecessárias e o site inteiro fica mais rápido.
Como descubro qual plugin deixa meu checkout lento?
Instale o Query Monitor e abra a página de checkout. Ele mostra o tempo gasto por cada plugin e as chamadas externas. Desative temporariamente os mais pesados e meça a melhora para confirmar o culpado.
A tabela wp_options pode deixar o checkout lento?
Sim. Se a wp_options tem muitos dados em autoload (transients órfãos, opções de plugins removidos), cada requisição carrega esse peso. Audite o autoload e remova o lixo para acelerar todas as páginas, inclusive o checkout.
Posso cachear a página de checkout para acelerar?
Não a página inteira. O checkout precisa ser dinâmico, pois usa nonces e dados de sessão. Cacheá-lo quebra o pedido. Em vez disso, use cache de objeto (Redis/Memcached) e OPcache, que aceleram as consultas sem cachear o HTML do checkout.
O cálculo de frete está travando o checkout. O que fazer?
Se cada recarregamento consulta a API da transportadora, a espera trava a página. Use um plugin ou ajuste que armazene a cotação por alguns minutos, para não chamar a transportadora a cada mudança de campo no checkout.
OPcache e cache de objeto fazem diferença no WooCommerce?
Fazem, e bastante. O WooCommerce executa muitas consultas repetidas no checkout. O OPcache acelera a execução do PHP e o cache de objeto persistente (Redis ou Memcached) guarda resultados em memória, reduzindo o tempo de resposta da finalização de compra.














