Como resolver cache que não limpa no WordPress
O que é o cache que não limpa no WordPress?
O cache que não limpa no WordPress acontece quando uma cópia salva da página continua sendo servida mesmo após uma alteração. O WordPress raramente tem só uma camada de cache: existe o cache do plugin de performance, o cache do próprio servidor (como Varnish ou LiteSpeed), o cache na borda do CDN e o cache do navegador do visitante. Cada camada guarda sua própria cópia, e limpar apenas uma faz as demais seguirem entregando a versão antiga. Resolver o problema é entender quais camadas estão ativas e purgar todas, na ordem certa, do servidor até o navegador.
Como identificar
- Você edita um post e a alteração não aparece no site, mas surge numa janela anônima.
- O cabeçalho de resposta mostra “x-cache: HIT” ou “cf-cache-status: HIT” mesmo após limpar o plugin.
- Mudanças de CSS aparecem para você, mas visitantes continuam vendo o layout antigo.
- O conteúdo só atualiza depois de forçar um recarregamento sem cache no navegador (Ctrl+F5).
Como prevenir
- Use apenas um plugin de cache por vez para evitar conflito entre camadas
- Configure o plugin para purgar o CDN e o cache de servidor automaticamente ao salvar conteúdo
- Mantenha tempos de expiração de navegador moderados em arquivos que mudam (HTML), reservando os longos só para estáticos versionados
Causa
- Várias camadas de cache empilhadas (plugin, servidor, CDN, navegador) em que purgar só uma deixa as outras servindo o conteúdo antigo.
- Cache de borda do CDN (como Cloudflare) que mantém a página por horas e não é purgado junto com o cache do plugin.
- Cache no nível do servidor (Varnish, LiteSpeed, NGINX FastCGI) que o plugin de cache do WordPress não consegue invalidar sozinho.
- Cabeçalhos de expiração longos no navegador, fazendo o visitante reaproveitar a cópia local por dias.
- Dois plugins de cache ativos ao mesmo tempo, um recriando a cópia que o outro acabou de apagar.
Como resolver
- Mapeie as camadas de cache ativas: verifique nos cabeçalhos de resposta quais caches existem (plugin, servidor, CDN). Saber quantas camadas há evita limpar uma e achar que resolveu.
- Purgue o cache do plugin: no seu plugin de performance, use "Limpar todo o cache". Esse é o primeiro nível e regenera o HTML estático do WordPress.
- Limpe o cache do servidor e do CDN: purgue o cache de borda no painel do CDN (ex.: Cloudflare) e o cache de servidor (Varnish/LiteSpeed) pelo painel da hospedagem. Sem isso, a borda continua servindo a versão antiga.
- Force a renovação no navegador: teste com recarregamento sem cache (Ctrl+F5) e numa janela anônima. Se atualizar só assim, o problema é o cabeçalho de expiração do navegador, não o servidor.
- Remova plugins de cache duplicados: deixe apenas um plugin de cache ativo. Dois ao mesmo tempo brigam pelo controle e um recria o que o outro apaga, deixando o cache eternamente desatualizado.
- Confirme com uma alteração de teste: edite um texto visível, salve e confira no site sem cache. Se aparecer de imediato em todas as camadas, a limpeza está completa.
// functions.php do tema-filho: botao na barra de admin que purga todas as camadas
add_action( 'admin_bar_menu', function ( $bar ) {
$bar->add_node( array(
'id' => 'full-purge-tudo',
'title' => 'Limpar TODO o cache',
'href' => wp_nonce_url( admin_url( '?full_purge=1' ), 'full_purge' ),
) );
}, 100 );
add_action( 'admin_init', function () {
if ( empty( $_GET['full_purge'] ) || ! current_user_can( 'manage_options' ) ) {
return;
}
check_admin_referer( 'full_purge' );
wp_cache_flush(); // cache de objeto (Redis/Memcached)
if ( function_exists( 'rocket_clean_domain' ) ) { // plugin de cache de pagina
rocket_clean_domain();
}
if ( function_exists( 'w3tc_flush_all' ) ) {
w3tc_flush_all();
}
do_action( 'litespeed_purge_all' ); // cache de servidor LiteSpeed
wp_safe_redirect( remove_query_arg( array( 'full_purge', '_wpnonce' ) ) );
exit;
} );














