Como corrigir o cache do WP Rocket em páginas dinâmicas do WooCommerce
O que é cache do WP Rocket no WooCommerce?
O cache do WP Rocket no WooCommerce gera um arquivo HTML estático de cada página e serve esse arquivo para os próximos visitantes, o que acelera a loja. O problema aparece quando uma página com conteúdo dependente do usuário (mini carrinho, total do pedido, estoque, preço por região) é salva nesse HTML estático: todo visitante passa a receber o estado de quem gerou o cache. O WP Rocket já trata esse risco excluindo automaticamente as páginas de Carrinho, Finalizar compra e Minha conta definidas em WooCommerce, além da REST API do WooCommerce, e otimiza a requisição get_refreshed_fragments que atualiza o mini carrinho.
Como identificar
- O mini carrinho no cabeçalho mostra o aviso ‘Carrinho vazio’ ou um número de itens que não corresponde ao que o cliente adicionou.
- Em ‘Aparência -> Personalizar’ ou na home, o total do carrinho fica fixo no valor de outro visitante e só muda depois de um refresh forçado (Ctrl+F5).
- Uma página de loja criada com page builder (não a página padrão de carrinho) exibe preço, estoque ou desconto de outro usuário.
- Cupons e preços por região aparecem aplicados para quem não deveria, porque a página foi servida do cache estático.
- Após esvaziar o cache do WP Rocket o conteúdo volta ao normal por alguns minutos e depois congela de novo.
Como prevenir
- Mantenha as três páginas transacionais sempre definidas em WooCommerce -> Configurações -> Avançado para a exclusão automática do WP Rocket continuar valendo após migrações ou troca de tema.
- Sempre que criar uma página de loja com page builder, adicione o caminho dela em Never Cache URL(s) no mesmo dia, antes de gerar tráfego.
- Implemente recursos dinâmicos (carrinho, preço por região, vistos recentemente) via JavaScript ou AJAX, nunca em PHP renderizado no servidor.
- Depois de qualquer mudança em cookies de estado do visitante, revise o campo Never Cache Cookies e limpe o cache uma vez.
Causa
- As páginas de Carrinho, Finalizar compra e Minha conta não estão definidas em WooCommerce -> Configurações -> Avançado, então o WP Rocket não reconhece quais páginas excluir automaticamente e as salva como HTML estático.
- Uma página dinâmica customizada (loja montada com Elementor, JetEngine ou shortcode de carrinho fora da página padrão) não entra na exclusão automática e precisa ser adicionada manualmente em Never Cache URL(s).
- A otimização do get_refreshed_fragments está ativa e entra em conflito com um mini carrinho de tema ou plugin de terceiros, deixando o contador do carrinho preso no valor cacheado.
- Um recurso dinâmico (lista de desejos, vistos recentemente, preço por geolocalização) foi implementado em PHP no lugar de JavaScript ou AJAX, então o valor é congelado no arquivo de cache em vez de ser recalculado no navegador.
- Um cookie próprio que define o estado do visitante (moeda, B2B, região) não está declarado em Never Cache Cookies, então variantes diferentes do mesmo cliente recebem o mesmo arquivo estático.
Como resolver
- Confirme as páginas do WooCommerce: Garanta que cada página transacional padrão está atribuída, pois a exclusão automática do WP Rocket depende dessa configuração do WooCommerce. Vá ao painel pelo menu indicado e verifique se Carrinho, Finalizar compra e Minha conta apontam para as páginas certas.
WooCommerce -> Configurações -> Avançado -> Configurações de página - Limpe o cache e revalide: Depois de conferir as páginas, force a regeneração do cache para o WP Rocket reaplicar as exclusões automáticas. Use o menu de cache na barra superior do WordPress.
WP Rocket -> Limpar e pré-carregar cache - Exclua páginas dinâmicas customizadas: Se a loja usa uma página de carrinho ou checkout fora do padrão (page builder ou shortcode), adicione o caminho relativo dela para nunca ser cacheado. Abra as regras avançadas e preencha o campo de URLs com um caminho por linha; um padrão entre parênteses cobre as páginas filhas.
Painel: WP Rocket -> Regras avançadas -> Never Cache URL(s) /carrinho-personalizado/ /minha-loja/checkout(.*) - Proteja estados por cookie: Se o estado do visitante (moeda, região, B2B) vier de um cookie próprio, declare esse cookie para o WP Rocket criar arquivos de cache separados por valor em vez de servir um único arquivo. Informe o nome do cookie no campo correspondente das regras avançadas.
Painel: WP Rocket -> Regras avançadas -> Never Cache Cookies wc_region woocommerce_currency - Trate o mini carrinho travado: Se só o contador do mini carrinho fica preso, desative a otimização de fragments do WP Rocket para o tema voltar a atualizar o widget via AJAX. A opção fica nas configurações do WooCommerce dentro do WP Rocket.
Painel: WP Rocket -> Configurações -> WooCommerce -> Optimize Cart Fragments (desativar)
// functions.php do tema-filho: nunca cachear uma página de loja customizada
add_filter( 'rocket_cache_reject_uri', function ( $uris ) {
$uris[] = '/minha-loja/(.*)'; // caminho relativo, aceita regex
$uris[] = '/carrinho-personalizado/';
return $uris;
} );
// Forçar variação de cache por cookie de estado (moeda/região)
add_filter( 'rocket_cache_mandatory_cookies', function ( $cookies ) {
$cookies[] = 'wc_region';
return $cookies;
} );














