Como corrigir o cache do WP Rocket que quebra listings do JetEngine no WordPress
O que é cache do WP Rocket que quebra listings do JetEngine?
O cache do WP Rocket que quebra listings do JetEngine e o conjunto de sintomas em que componentes dinâmicos do JetEngine deixam de funcionar depois que o WP Rocket e ativado ou tem otimizacoes ligadas. O JetEngine renderiza Listing Grids, JetSmartFilters e carregamentos por AJAX dependendo de scripts JavaScript e folhas de estilo especificas que precisam estar presentes e executar no navegador. Quando o WP Rocket adia, remove ou serve uma versão cacheada desses recursos, o listing aparece vazio, sem estilo ou simplesmente não reage aos filtros.
A origem não e um bug do JetEngine nem do WP Rocket isoladamente, mas a forma como as otimizacoes interagem com conteúdo gerado no carregamento. Segundo a documentação do WP Rocket, o recurso Delay JavaScript Execution adia todos os arquivos e scripts inline até haver uma interacao do usuário, e o Remove Unused CSS gera o CSS a partir das primeiras visitas, podendo descartar estilos de elementos carregados depois por AJAX. Em listings que dependem de paginação AJAX, ordenacao ou filtros, esse adiamento e essa remoção removem exatamente os recursos que dao vida ao componente. A correção passa por excluir os scripts e estilos do JetEngine dessas otimizacoes em vez de desligar o cache inteiro.
Como identificar
- O Listing Grid do JetEngine aparece vazio ou so com o esqueleto de carregamento (‘loading’) na página cacheada, mas funciona normalmente quando o cache da página e limpo ou você esta logado como admin.
- Os filtros do JetSmartFilters não reagem ao clique: a lista não atualiza e no console do navegador surge um erro de JavaScript ou uma requisicao AJAX que nunca dispara.
- A paginação AJAX (‘Load More’ ou numerada) do listing não avança de página e fica presa na primeira leva de itens.
- O listing carrega sem estilo (cards empilhados, grid sem colunas), sinal de que o CSS do componente foi removido pela otimização de CSS.
- O conteúdo dinâmico so aparece depois que o visitante clica, rola ou move o mouse na página, indicando que o script ficou retido pelo Delay JavaScript Execution até a interacao.
Como prevenir
- Sempre que ativar uma nova otimização do WP Rocket (Delay JavaScript, Remove Unused CSS, combinar JS), teste as páginas com Listing Grid e filtros em uma janela anonima antes de manter a configuração em producao.
- Mantenha uma lista das exclusoes de jet-engine e jet-smart-filters documentada, para reaplicar rapidamente após qualquer reset ou reconfiguracao do WP Rocket.
- Valide mudancas de cache primeiro em staging, já que o Remove Unused CSS e o cache de página se comportam diferente entre admin logado e visitante anonimo.
- Prefira excluir scripts e estilos especificos do JetEngine em vez de desligar a otimização inteira, para não perder o ganho de performance no restante do site.
Causa
- O Delay JavaScript Execution do WP Rocket adia todos os scripts até a primeira interacao do usuário; como o Listing Grid e o JetSmartFilters dependem de JavaScript para montar e atualizar a lista, o componente fica vazio até o visitante interagir com a página.
- O Remove Unused CSS gera o CSS usado a partir das primeiras visitas e descarta o resto; o estilo do listing carregado por AJAX não existe nesse momento de varredura, entao a folha de estilo do componente e removida e o grid renderiza sem layout.
- A minificacao ou combinacao de JavaScript do WP Rocket altera ou agrupa o script do JetEngine ou do JetSmartFilters, quebrando a chamada AJAX que busca os itens e filtros do listing.
- O cache de página serve um HTML estático capturado quando o listing ainda estava vazio (antes do AJAX preencher), de modo que todo visitante recebe a versão sem itens até o cache daquela URL ser regenerado.
- O Lazy Load do WP Rocket adia imagens e iframes dos itens do listing, e como esses elementos são injetados por AJAX depois do carregamento, ficam sem o atributo de lazy load esperado e não aparecem ou quebram a altura dos cards.
Como resolver
- Confirme que o problema e de otimização, não do listing: Limpe o cache do WP Rocket e abra a página do listing em uma aba anonima. Se o listing carrega certo logo após a limpeza e quebra de novo na próxima visita cacheada, o culpado e uma otimização do WP Rocket, não a configuração do JetEngine.
Painel WP -> WP Rocket -> Painel -> Limpar cache Abra a URL do listing em uma janela anonima e observe se ele carrega corretamente na primeira visita - Exclua os scripts do JetEngine do Delay JavaScript Execution: Em File Optimization, no campo de exclusoes do Delay JavaScript Execution, adicione as palavras-chave dos scripts do JetEngine e do JetSmartFilters para que eles executem no carregamento e não fiquem retidos até a interacao. Use trechos do caminho do arquivo como palavra-chave.
Painel WP -> WP Rocket -> File Optimization -> Delay JavaScript Execution No campo 'Excluded JavaScript Files' adicione: jet-engine Adicione também: jet-smart-filters Salve e limpe o cache - Protega o CSS do listing no Remove Unused CSS: Ainda em File Optimization, adicione os identificadores das folhas de estilo do JetEngine ao CSS Safelist do Remove Unused CSS, para que o estilo do listing não seja descartado quando o componente e carregado por AJAX depois da varredura inicial.
Painel WP -> WP Rocket -> File Optimization -> Optimize CSS delivery -> Remove Unused CSS No campo 'CSS Safelist' adicione um handle/seletor por linha: jet-engine Adicione também: jet-smart-filters Salve e limpe o cache - Adicione o atributo nowprocket via filtro quando precisar de precisao: Se o listing ainda depender de um script inline específico, marque esse script com o atributo nowprocket ou exclua o inline pelo filtro do WP Rocket, usando uma palavra única presente so naquele script para não afetar os demais. Aplique pela função do tema ou por um snippet (veja o bloco de código).
Edite functions.php do tema filho ou use um plugin de snippets Use o filtro rocket_defer_inline_exclusions com uma palavra única do script do listing Salve, limpe o cache do WP Rocket e recarregue a página - Exclua a URL do listing do cache se ela for muito dinâmica: Quando a página depende de estado por visitante (filtros na URL, resultados personalizados), exclua o padrão de URL do cache de página do WP Rocket para que cada visita gere o listing fresco, em vez de servir um HTML capturado vazio.
Painel WP -> WP Rocket -> Advanced Rules -> Never Cache URL(s) Adicione o caminho do listing, por exemplo: /catalogo/(.*) Salve e limpe o cache
<?php
/**
* Exclui scripts inline do JetEngine / JetSmartFilters do adiamento
* do WP Rocket (Delay/Defer), evitando que o Listing Grid e os
* filtros fiquem inertes ate a interacao do usuario.
*/
add_filter( 'rocket_defer_inline_exclusions', 'full_jetengine_inline_exclusions' );
function full_jetengine_inline_exclusions( $exclusions ) {
// Palavras unicas presentes nos scripts inline do JetEngine.
$exclusions[] = 'JetEngineSettings';
$exclusions[] = 'JetSmartFilterSettings';
return $exclusions;
}
/**
* Exclui arquivos do JetEngine do Delay JavaScript Execution
* por palavra-chave do caminho, complementando o painel.
*/
add_filter( 'rocket_delay_js_exclusions', 'full_jetengine_delay_exclusions' );
function full_jetengine_delay_exclusions( $excluded ) {
$excluded[] = 'jet-engine';
$excluded[] = 'jet-smart-filters';
return $excluded;
}














