Performance e E-commerce

Cache em lojas WooCommerce: como configurar sem quebrar o checkout

J
Jorge Henrique de Oliveira
Ilustração 3D isométrica de ecossistema técnico de cache para WooCommerce com núcleo central e módulos conectados em fundo grafite escuro

Sua loja WooCommerce está lenta e você instalou um plugin de cache para resolver — mas agora o checkout trava, o carrinho aparece vazio para alguns clientes ou o total não atualiza. Esse é um dos cenários mais comuns em lojas virtuais: o cache acelera a loja, mas configurado de forma errada, quebra exatamente a parte que gera dinheiro.

O problema não é o cache em si. É que páginas de e-commerce misturam conteúdo estático (catálogo, páginas de produto) com conteúdo dinâmico e por-sessão (carrinho, checkout, conta do cliente). Tratar tudo da mesma forma é o caminho mais curto para carrinho compartilhado entre clientes, checkout que não avança e perda de vendas.

Neste artigo, você vai aprender a configurar dois dos plugins de cache mais usados no WordPress — WP Super Cache e LiteSpeed Cache — para WooCommerce, sem comprometer o fluxo de compra. A cobertura inclui o que excluir do cache, como validar se o checkout funciona com cache ativo e como testar antes de colocar em produção. Se o problema da sua loja vai além do cache, veja também nosso guia de diagnóstico de loja WooCommerce lenta.

Por que cache em WooCommerce é diferente de sites estáticos

Em um site institucional ou blog, o conteúdo é o mesmo para todo visitante. Cachear é simples: gere uma versão estática e sirva para todos. Em uma loja WooCommerce, cada visitante tem um carrinho diferente, uma sessão diferente e, muitas vezes, preços diferentes (membros, cupons, promoções segmentadas). Para entender como a performance impacta diretamente a conversão, veja nosso artigo sobre performance de lojas WooCommerce desde o início.

O WooCommerce define automaticamente três páginas como dinâmicas — Carrinho, Checkout e Minha Conta — e sinaliza para plugins de compatíveis que essas páginas nunca devem ser cacheadas. Desde a versão 1.4.2 do WooCommerce, a constante DONOTCACHEPAGE é definida nessas páginas, informando ao plugin de cache que elas devem ser servidas diretamente do PHP.

Além disso, o WooCommerce usa cookies para controlar a sessão do cliente:

  • woocommerce_cart_hash — identifica se o carrinho mudou
  • woocommerce_items_in_cart — indica se há itens no carrinho
  • wp_woocommerce_session_ — dados da sessão do cliente

Esses cookies são fundamentais para o mecanismo de cache. Se um plugin de cache os ignora e serve a mesma página para quem tem itens no carrinho e para quem não tem, o resultado é cliente vendo carrinho de outra pessoa.

A regra de ouro: nunca cachear carrinho, checkout e minha conta

Independentemente do plugin de cache que você usar, a configuração mais importante é a mesma: excluir do cache as páginas que contêm dados por sessão.

As três páginas que nunca devem ser cacheadas:

PáginaPor quê
/cart/Exibe itens, quantidades e total específicos do cliente
/checkout/Dados de pagamento, endereço e frete — 100% personalizados
/my-account/Pedidos, downloads, dados pessoais do cliente

Se a sua loja usa endpoints personalizados ou plugins de lista de desejo, esses caminhos também devem ser excluídos.

A boa notícia: tanto WP Super Cache quanto LiteSpeed Cache respeitam essas exclusões automaticamente quando detectam o WooCommerce. Mas “automaticamente” não significa “sempre” — atualizações de plugins, mudanças de slug ou configurações manuais podem alterar esse comportamento. Por isso, verificar é essencial.

WP Super Cache: configuração passo a passo para WooCommerce

WP Super Cache (v3.1.1, testado até WordPress 7.0.4) é gratuito, mantido pela Automattic e é o plugin de cache mais simples de configurar. O WooCommerce é nativamente compatível com ele — o próprio WooCommerce envia informações ao WP Super Cache para que ele não cacheie Carrinho, Checkout ou Minha Conta por padrão (documentação oficial do WooCommerce sobre caching).

Ativar o cache

  1. Vá para Configurações → WP Super Cache.
  2. Na aba Fácil, ative Cache ligado.
  3. Clique em Testar Cache para verificar se está funcionando.

Configuração recomendada

Na aba Fácil, ative o modo Simple. É o modo recomendado pela documentação oficial (wiki do WP Super Cache): quase tão rápido quanto o Expert, não altera o .htaccess e permite partes dinâmicas na página. O modo Expert usa regras de reescrita no .htaccess e é mais rápido, mas requer edits no arquivo e pode derrubar o site se configurado incorretamente — use-o somente se tiver experiência com o servidor e fizer backup prévio.

Na aba Avançado:

  • Não cachear visitantes logados: Ativado
  • Não cachear páginas com parâmetros GET: Ativado
  • Comprimir páginas: Ativado (usa GZIP)
  • Atalhar cache: Ativado

Verificar exclusões do WooCommerce

WP Super Cache exclui automaticamente Carrinho, Checkout e Minha Conta quando o WooCommerce está ativo. Para confirmar, confira as páginas atribuídas em WooCommerce → Configurações → Avançado e compare com a lista de URIs rejeitadas em Configurações → WP Super Cache → Avançado → Nome de arquivo aceito e URIs rejeitadas. Os slugs podem variar conforme a configuração da loja — não assuma caminhos em inglês nem que eles estejam na lista por padrão. Se faltarem, adicione manualmente.

Não cachear para administradores

Na aba Avançado, ative Não cachear visitantes logados. Isso impede que administradores e editores vejam conteúdo desatualizado while testing.

Teste após configurar

Abra a página de produto em uma aba anônima. Adicione um produto ao carrinho. Abra a página do carrinho em outra aba anônima. Se o carrinho aparecer vazio ou o total não bater, o cache está servindo conteúdo errado — volte e verifique as exclusões.

LiteSpeed Cache: configuração passo a passo para WooCommerce

LiteSpeed Cache (v7.9, testado até WordPress 7.0.4) é uma alternativa mais robusta, especialmente se o seu servidor roda LiteSpeed Enterprise ou OpenLiteSpeed. Ele também é compatível com servidores Apache e Nginx via QUIC.cloud (documentação oficial do LiteSpeed Cache).

Detecção automática do WooCommerce

Quando o LiteSpeed Cache detecta o WooCommerce ativo, ele exclui automaticamente as páginas de Carrinho, Checkout e Minha Conta do cache público (FAQ do LiteSpeed Cache — WooCommerce). Você não precisa adicioná-las manualmente em Do Not Cache URIs. Verifique os caminhos atribuídos em WooCommerce → Configurações → Avançado — eles podem variar conforme a loja.

Configuração recomendada

Cache → Excludes → Do Not Cache URIs

Adicione apenas URIs adicionais que devem ser excluídas do cache, como páginas de lista de desejo:

/wishlist

Não adicione parâmetros de query string nesta lista — use o campo específico Do Not Cache Query Strings.

Cache → Excludes → Do Not Cache Query Strings

Adicione padrões de query string que geram conteúdo dinâmico (documentação oficial — Do Not Cache Query Strings):

add-to-cart
orderby

O LiteSpeed Cache respeita as regras de exclusão do WooCommerce por padrão; essas regras são uma camada adicional para parâmetros específicos da sua loja.

Cache → Excludes → Do Not Cache Cookies

Não adicione woocommerce_cart_hash ou woocommerce_items_in_cart nesta lista. Esses cookies aparecem em todas as páginas com itens no carrinho — adicioná-los aqui desabilitaria o cache para todos os clientes reais.

Cache → Advanced → Vary for Mini Cart

O LiteSpeed Cache já distingue automaticamente visitantes com e sem itens no carrinho. A configuração Vary for Mini Cart (documentação oficial) pode ser considerada apenas no caso específico de temas cujo mini-cart não seja atualizado corretamente via JavaScript.

ESI (Edge Side Includes)

Se o seu servidor suporta LiteSpeed Enterprise ou QUIC.cloud, ative ESI:

  1. Vá para LiteSpeed Cache → ESI.
  2. Ative Enable ESI.
  3. Confirme que o widget Mini-Cart do WooCommerce é o padrão (woocommerce_widget_cart).

ESI permite cachear a página inteira publicamente, mas servir o mini-cart como bloco privado por visitante. É a melhor solução para lojas com mini-cart no header.

Object Cache

Se o servidor tem Redis ou Memcached, ative o object cache (documentação oficial — Object Cache):

  1. Vá para LiteSpeed Cache → Cache → Object.
  2. Ative Object Cache.
  3. Método: Redis (preferido) ou Memcached.
  4. Host: 127.0.0.1 ou socket Unix.
  5. Default Object Lifetime: o padrão documentado é 360 segundos (documentação oficial — Default Object Lifetime). Qualquer alteração deve considerar a infraestrutura, os grupos de dados cacheados e validação prática — não existe um valor único correto para todas as lojas.

Object cache pode reduzir significativamente as consultas ao banco de dados em páginas dinâmicas.

Otimização de JS

Na aba Page Optimization → Tuning Settings:

  • Não ative JS Combine em lojas WooCommerce. Cart fragments usa AJAX via jQuery e quebra quando scripts são combinados.
  • Scripts de gateway de pagamento (ex: stripe.js, Braintree SDK) devem estar em JS Deferred Excludes.

Cart fragments: o pedido AJAX que pode travar sua loja

Cart fragments é um script do WooCommerce que atualiza o mini-cart e o widget de carrinho sem recarregar a página. Ele pode disparar uma requisição AJAX para ?wc-ajax=get_refreshed_fragments em eventos como adição, remoção ou atualização de itens no carrinho, e não necessariamente em cada carregamento de página (melhores práticas para cart fragments — blog do WooCommerce).

O problema: essa requisição bypass no cache e inicializa o WordPress inteiro, adicionando latência ao carregamento — o impacto varia conforme o servidor, os gatilhos acionados e a complexidade da loja.

Desde o WooCommerce 7.8

A partir da versão 7.8 (junho de 2023), o WooCommerce desativa cart fragments por padrão em páginas que não renderizam o widget Mini-Cart. Se o seu tema não usa o widget de carrinho no header ou footer, o script nem é carregado.

Temas como Storefront ainda hard-codam o widget, então o script continua ativo. Verifique se o seu tema inclui o widget Mini-Cart.

Como limitar execução a páginas específicas

Se o script está causando lentidão, a abordagem oficial é limitar sua execução usando o filtro woocommerce_get_script_data. Isso faz o script ser carregado mas não executado em páginas que não precisam dele:

add_filter( 'woocommerce_get_script_data', function( $script_data, $handle ) {
    if ( 'wc-cart-fragments' === $handle ) {
        if ( is_woocommerce() || is_cart() || is_checkout() ) {
            return $script_data;
        }
        return null;
    }
    return $script_data;
}, 10, 2 );

Ressalvas: se o seu tema expõe o widget Mini-Cart em todas as páginas, o script precisa ser executado nelas — caso contrário, o mini-cart não atualizará. Teste em staging antes de aplicar em produção.

Alternativa recomendada: Mini-Cart Block

O bloco Mini-Cart do WooCommerce não usa cart fragments e tem medidas nativas de performance. Se o seu tema suporta blocos, substituir o widget clássico pelo Mini-Cart Block é a solução mais limpa.

O que excluir do cache (lista completa)

Além das três páginas principais, outros padrões devem ser excluídos:

Caminho/PadrãoMotivo
/cartCarrinho do cliente
/checkoutDados de pagamento e frete
/my-accountConta do cliente
add-to-cart (query string)Adicionar ao carrinho via URL
orderby (query string)Ordenação dinâmica
/wishlist/Lista de desejo (se usar plugin)
/?wc-ajax=*Requisições AJAX do WooCommerce
/?remove_item=*Remoção de item do carrinho

Cookies usados pelo WooCommerce para controle de sessão (a distinção entre visitantes com e sem itens no carrinho é tratada automaticamente pelo plugin de cache):

  • woocommerce_cart_hash
  • woocommerce_items_in_cart
  • wp_woocommerce_session_

Como testar se o cache está funcionando sem quebrar o checkout

A configuração está feita. Agora, antes de colocar em produção, teste o fluxo completo.

Teste 1: Carrinho isolado

  1. Abra uma janela anônima (Chrome: Ctrl+Shift+N).
  2. Adicione um produto ao carrinho.
  3. Abra a página do carrinho em outra aba anônima.
  4. Esperado: carrinho com o produto adicionado, total correto.

Teste 2: Sessões separadas

  1. Na primeira janela anônima, adicione um produto.
  2. Abra um navegador ou perfil diferente (dois chrome anônimos no mesmo navegador compartilham cookies).
  3. Acesse a página do carrinho no segundo navegador/perfil.
  4. Esperado: carrinho vazio. Se aparecer o produto da primeira sessão, há vazamento de cache — pare e revise as exclusões.

Teste 3: Checkout completo

  1. Na primeira janela, prossiga para o checkout.
  2. Preencha dados de teste.
  3. Use um gateway em modo sandbox (se disponível).
  4. Finalize a compra.
  5. Esperado: pedido registrado, e-mail de confirmação enviado, redirecionado para a página de agradecimento.

Teste 4: Atualização do mini-cart

  1. Adicione um produto via AJAX (botão “Adicionar ao carrinho” na página de produto, sem redirecionar).
  2. Esperado: mini-cart no header atualiza sem recarregar a página.

Teste 5: Headers de cache

Use as ferramentas de desenvolvedor do navegador (F12 → Network) para verificar os headers de resposta:

  • Cache hit: X-LiteSpeed-Cache: hit (LiteSpeed) ou X-WP-Super-Cache / WP-Super-Cache (WP Super Cache — headers visíveis quando o diagnóstico de serviço está ativo)
  • Cache miss: Ausência desses headers ou valor miss
  • Páginas como /cart e /checkout nunca devem ter hit

Teste 6: Desabilitar cache para comparação

Para comparar uma versão cached com uma não cached no LiteSpeed Cache, use ?LSCWP_CTRL=NOCACHE (requer IP administrativo autorizado em Toolbox → Debug Settings → Admin IPs — documentação oficial — Admin IP Commands). O parâmetro ?LSCWP_CTRL=before_optm desativa otimizações (CSS/JS), não o cache — útil para diagnosticar problemas de otimização, não de cache.

No WP Super Cache, use o botão Testar Cache na aba Fácil ou desative o cache temporariamente nas configurações para comparação.

Erros comuns ao configurar cache em WooCommerce

1. Cachear checkout para “acelerar”

O checkout é a página mais importante da loja. Cacheá-lo significa mostrar dados de outro cliente, perder itens do carrinho ou travar o pagamento. Nunca cachear /checkout. Se o seu checkout apresenta outros tipos de erro, veja nosso diagnóstico de checkout com erros no WooCommerce.

2. Adicionar cookies do WooCommerce à lista “Do Not Cache”

O LiteSpeed Cache tem duas listas relacionadas a cookies: Do Not Cache Cookies e Vary Cookies. Adicionar woocommerce_cart_hash à primeira lista desabilita o cache para todo mundo que tem itens no carrinho — ou seja, para todos os clientes reais. Esses cookies não devem ser adicionados por padrão; use Vary for Mini Cart somente quando o tema não atualizar o mini-cart corretamente por JavaScript.

3. Ativar JS Combine em lojas com cart fragments

O script de cart fragments usa AJAX via jQuery de uma forma que quebra quando combinado com outros scripts. Se o checkout ou o mini-cart parar de funcionar após ativar JS Combine, desative-o e adicione scripts de pagamento à lista de exclusão.

4. Esquecer de testar em janela anônima

Enquanto estiver logado como administrador, o WP Super Cache pode não cachear páginas para você (se “não cachear visitantes logados” estiver ativo). Isso cria a falsa sensação de que tudo está funcionando. Sempre teste em janela anônima ou em outro dispositivo.

5. Não verificar após atualizar plugins

Atualizações do WooCommerce ou do plugin de cache podem alterar slugs, endpoints ou comportamento de exclusão. Após cada atualização relevante, repita os testes de validação.

6. Desativar WP-Cron sem configurar um substituto

O WooCommerce usa o Action Scheduler (baseado no WP-Cron) para tarefas como atualização de status de pedidos e notificações de estoque baixo. Se você desativou o WP-Cron, configure um cron real no servidor. Siga a documentação da sua hospedagem para o intervalo correto e monitore a fila em WooCommerce → Status → Ações agendadas. Para filas grandes ou alto volume de pedidos, avalie o uso de WP-CLI para processamento assíncrono, que é o método recomendado pela documentação do Action Scheduler (documentação de performance do Action Scheduler).

Perguntas frequentes

Preciso de plugin de cache em WooCommerce?

Sim, mas com atenção. A maioria das lojas WooCommerce se beneficia de cache na página de produto, categorias e arquivos. As páginas de sessão (carrinho, checkout, conta) nunca devem ser cacheadas. O WooCommerce é compatível com WP Super Cache, LiteSpeed Cache, WP Rocket e W3 Total Cache — todos excluem as páginas dinâmicas por padrão.

WP Super Cache ou LiteSpeed Cache — qual escolher?

Depende do servidor. Se você usa hospedagem compartilhada ou VPS com Apache/Nginx, WP Super Cache é suficiente e mais simples. Se o servidor roda LiteSpeed Enterprise ou OpenLiteSpeed, LiteSpeed Cache oferece melhor integração, suporte a ESI e object cache nativo. Para servidores LiteSpeed, o LiteSpeed Cache é a escolha natural.

ESI é obrigatório para WooCommerce?

Não. ESI (Edge Side Includes) permite cachear a página inteira publicamente enquanto serve blocos privados (como o mini-cart) individualmente. É a melhor experiência, mas requer LiteSpeed Enterprise ou QUIC.cloud. Sem ESI, o LiteSpeed Cache funciona normalmente com exclusões de página e variação por cookie.

Object cache ajuda em lojas WooCommerce?

Sim, bastante. Object cache com Redis ou Memcached reduz consultas ao banco de dados em páginas dinâmicas como checkout e minha conta, melhorando o tempo de resposta do servidor. O padrão documentado do LiteSpeed Cache é 360 segundos; ajustes devem ser feitos conforme a infraestrutura e validados em produção — não recomende uma faixa universal sem testar o comportamento real da loja.

Cache afeta o SEO da loja?

Positivamente, quando configurado corretamente. Páginas de produto e categorias que carregam mais rápido tendem a ter melhor experiência do usuário e podem influenciar positivamente o ranqueamento. Páginas de sessão (carrinho, checkout) não devem ser indexadas — plugins de SEO como Yoast e Rank Math aplicam noindex a elas, e o WooCommerce já sinaliza para motores de busca que essas páginas são dinâmicas.

Como saber se o cache está causando problemas no checkout?

Sinais comuns: carrinho aparece vazio para alguns clientes, total do carrinho não atualiza, erro ao finalizar pagamento, dados de endereço de outro cliente aparecendo. Para diagnosticar, desative o cache temporariamente nas configurações do plugin ou use ?LSCWP_CTRL=NOCACHE no LiteSpeed (requer IP autorizado). Se o problema desaparecer, o cache está mal configurado.

Preciso limpar o cache após atualizar o WooCommerce?

Recomendado. Após atualizar o WooCommerce, plugins ou temas, limpe o cache completo do plugin de cache e do navegador. No WP Super Cache, vá para Conteúdo → Apagar tudo. No LiteSpeed Cache, vá para Toolbox → Purge All.

Conclusão

Configurar cache em WooCommerce não é complicado, mas exige atenção a um detalhe crucial: páginas de sessão nunca são cacheadas. WP Super Cache e LiteSpeed Cache respeitam isso por padrão, mas atualizações e configurações manuais podem quebrar esse comportamento. Verifique as exclusões, teste em janela anônima e valide o fluxo completo de compra antes de colocar em produção.

Se sua loja apresenta problemas de performance que vão além do cache — lentidão geral, checkout lento, imagens pesadas — um diagnóstico técnico profundo pode identificar a causa real. Para um passo a passo completo de preparação da loja, consulte nosso guia de temas e plugins essenciais para WooCommerce.

Solicitar análise inicial da minha loja

Artigos relacionados