Como corrigir o erro de Preload no WP Rocket
O que é o erro de Preload no WP Rocket?
O Preload e a feature do WP Rocket que gera os arquivos de cache antecipadamente, simulando uma visita a cada página antes de qualquer visitante real chegar. Por padrão ele le os sitemaps dos plugins de SEO (Yoast, Rank Math, All in One SEO, SEOPress, The SEO Framework) ou o sitemap nativo do WordPress, descobre as URLs e vai preenchendo o cache uma a uma, registrando o progresso na tabela wp_wpr_rocket_cache do banco. O robo processa até 45 URLs por minuto e reduz o ritmo sozinho se o servidor ficar sob carga. O disparo da fila depende do WP-Cron: e ele que chama o processamento em segundo plano. O erro de Preload e justamente quando essa engrenagem para: a fila fica parada, as URLs nunca saem do estado pendente e o cache não e preenchido. Como o WP Rocket não para o site nem mostra erro fatal, o sintoma costuma passar despercebido até alguem notar que a primeira visita de cada página continua lenta.
Como identificar
- No painel, em WP Rocket -> Dashboard, a barra de progresso do Preload nunca chega a 100 por cento ou fica parada no mesmo número por muito tempo
- A pasta de cache em wp-content/cache/wp-rocket fica vazia ou com pouquissimos arquivos, mesmo depois de clicar em Clear and preload cache
- Na tabela wp_wpr_rocket_cache as linhas das URLs continuam com status pendente e nunca passam para concluido
- O PageSpeed Insights e o teste de TTFB mostram a primeira visita de cada página lenta, e so a segunda visita (já em cache) fica rápida
- Em sites com Yoast ou Rank Math, o WP Rocket não encontra URLs para preload porque o sitemap retorna vazio ou da erro ao ser aberto
Como prevenir
- Configure um cron real no servidor em vez de confiar no WP-Cron: assim a fila de preload anda mesmo em sites de baixo tráfego, que quase nunca disparam o cron padrão.
- Mantenha o sitemap do plugin de SEO sempre gerado e acessivel, já que e a fonte de URLs do preload; um sitemap quebrado deixa a fila vazia.
- Deixe o user-agent do preload do WP Rocket na allowlist do firewall e do Cloudflare desde o inicio, evitando que o robo seja barrado quando novas páginas forem publicadas.
- Antes de publicar, tire o site de modo de manutenção e de proteção por senha, porque o robo de preload enxerga a página como um visitante anonimo qualquer.
Causa
- O WP-Cron não roda (a constante DISABLE_WP_CRON esta como true ou o site tem tráfego baixo demais para disparar o cron), entao a fila de preload nunca e processada.
- O sitemap não esta acessivel ou retorna vazio: o WP Rocket le o sitemap do plugin de SEO para descobrir as URLs, e sem ele a fila de preload não tem o que percorrer.
- Falta a extensão SimpleXML no PHP, necessaria para o WP Rocket ler o XML do sitemap; sem ela o parse do sitemap falha e nenhuma URL entra na fila.
- Um plugin de segurança (Wordfence, AIOS, iThemes) ou o firewall do servidor bloqueia o user-agent WP Rocket/Preload, e o robo e barrado antes de carregar a página.
- A hospedagem proibe o site de fazer requisicoes a si mesmo via cURL (loopback bloqueado), entao o robo de preload não consegue abrir as proprias URLs.
- As URLs alvo tem query string na ponta (parametros depois do ponto de interrogacao) ou estão na lista de exclusão, e o WP Rocket não faz preload de páginas com query string nem das excluidas.
- O site não esta publicamente acessivel: esta em modo de manutenção, protegido por senha (HTTP Auth) ou ainda em staging, e o robo de preload enxerga a barreira em vez da página.
Como resolver
- Confirme que o WP-Cron esta ativo: A fila de preload so anda quando o cron consegue rodar. Abra o arquivo de configuração do WordPress e verifique se a constante de desativar o cron não esta ligada. Se estiver como true, troque para false. Em sites de baixo tráfego o WP-Cron quase não e chamado, entao prefira configurar um cron real no painel da hospedagem chamando o arquivo de cron do WordPress a cada poucos minutos.
define( 'DISABLE_WP_CRON', false ); */5 * * * * wget -q -O - https://seusite.com.br/wp-cron.php?doing_wp_cron - Verifique se o sitemap abre e tem URLs: O preload descobre as páginas pelo sitemap do seu plugin de SEO. Abra a URL do sitemap em uma janela anonima e confirme que ela carrega e lista páginas de verdade. Se der erro, voltar em branco ou não existir, gere o sitemap no plugin de SEO antes de seguir, porque sem ele a fila de preload nunca recebe URLs.
https://seusite.com.br/sitemap_index.xml https://seusite.com.br/sitemap.xml - Garanta a extensão SimpleXML no PHP: O WP Rocket precisa da extensão SimpleXML para ler o XML do sitemap. Em WP Rocket -> Tools, ou na Saude do Site do WordPress, confira se a extensão esta carregada. Se faltar, peca a hospedagem para habilitar a extensão na versão de PHP do site e reinicie o serviço. Sem ela, o parse do sitemap falha em silencio e nenhuma URL entra na fila.
php -m | grep -i simplexml WordPress -> Ferramentas -> Saude do Site -> Informações -> Servidor - Libere o user-agent do robo de preload no firewall: Se um plugin de segurança ou o firewall do servidor barra o robo, as URLs nunca carregam para o robo e a fila trava. Adicione o user-agent do preload do WP Rocket a allowlist do plugin de segurança ou do firewall, e no Cloudflare desligue o Bot Fight Mode, que costuma tratar o robo como bot malicioso.
WP Rocket/Preload Cloudflare -> Security -> Bots -> Bot Fight Mode: Off - Tire query strings e exclusoes do caminho do preload: O WP Rocket não faz preload de páginas com query string nem das que estão na lista de exclusão. Revise o campo de URLs excluidas e remova as páginas que deveriam ser preloadadas. Para links com parametro, ative a remoção de query strings ou ajuste a origem dos links, para que a URL canonica entre na fila limpa.
WP Rocket -> Cache -> Never Cache URL(s) WP Rocket -> File Optimization -> Remove query strings - Limpe o estado e force um novo preload: Com os bloqueios removidos, recomece a fila do zero. No painel, em WP Rocket -> Dashboard, clique em Clear and preload cache para descartar o estado antigo e recolocar todas as URLs na fila. Acompanhe a barra de progresso e confira na pasta de cache se os arquivos comecam a aparecer. Em poucos minutos a fila deve avancar e o cache se preencher.
WP Rocket -> Dashboard -> Clear and preload cache wp-content/cache/wp-rocket/seusite.com.br/
<?php
// wp-config.php
// O Preload do WP Rocket so processa a fila quando o WP-Cron roda.
// Errado (a fila de preload nunca e disparada):
// define( 'DISABLE_WP_CRON', true );
// Certo: mantenha o WP-Cron ativo...
define( 'DISABLE_WP_CRON', false );
// ...e, em sites de baixo trafego, configure um cron REAL no servidor
// chamando wp-cron.php a cada 5 minutos (crontab do servidor),
// para a fila de preload andar sem depender de visitas:
// */5 * * * * wget -q -O - https://seusite.com.br/wp-cron.php?doing_wp_cron














