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.
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.
// 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 );














