Como corrigir o cache mobile do WP Rocket que não funciona no iOS no WordPress
O que é cache mobile do WP Rocket que não funciona no iOS?
O cache mobile do WP Rocket é a função que cria um conjunto separado de arquivos de cache para dispositivos móveis, de forma que qualquer conteúdo específico de celular seja armazenado e servido de maneira independente da versão desktop. Segundo a documentação oficial, esse recurso vem ativado por padrão ao ativar o WP Rocket e aplica o cache de página e as demais otimizações também ao acesso mobile. O WP Rocket grava esses arquivos como index-mobile.html_gzip (ou index-mobile-webp.html_gzip quando há WebP) dentro de wp-content/cache/wp-rocket/seudominio.com/.
Quando esse cache não funciona no iOS, o iPhone ou iPad passa a receber a versão desktop em cache, um layout quebrado ou conteúdo desatualizado no Safari móvel. A detecção do dispositivo é feita pelo HTTP user agent, com a lógica na biblioteca Mobile_Detect.php do WP Rocket. O problema aparece quando essa detecção não roda (porque uma camada de cache na frente responde antes), quando a opção de arquivos separados para mobile está desativada, ou quando outra camada como o Cloudflare APO não está configurada para variar o cache por tipo de dispositivo.
Como identificar
- Ao abrir o site no Safari do iPhone ou iPad, aparece a versão desktop em cache em vez do layout mobile, mesmo com o WP Rocket ativo.
- O conteúdo no iOS fica desatualizado: uma alteração publicada já aparece no desktop, mas o Safari móvel continua mostrando a versão antiga.
- Não existe nenhum arquivo index-mobile.html_gzip (ou index-mobile-webp.html_gzip) dentro de wp-content/cache/wp-rocket/seudominio.com/, indicando que o cache mobile não está sendo gerado.
- O mesmo site abre corretamente em mobile no Chrome do Android, mas entrega layout desktop apenas no Safari do iOS.
- Com Cloudflare APO ativo, todos os dispositivos recebem a mesma resposta em cache e o iPhone nunca recebe a variação mobile.
Como prevenir
- Mantenha a opção Separate cache files for mobile devices sempre ativa no WP Rocket, já que ela vem habilitada por padrão e é o que garante a versão mobile no iOS.
- Sempre que adicionar uma camada de cache acima do WP Rocket (Cloudflare APO, Varnish, NGINX), configure-a desde o início para variar a resposta por tipo de dispositivo.
- Depois de qualquer mudança de layout ou de configuração de cache, valide o site real em um iPhone e não apenas no modo responsivo do navegador desktop.
- Documente quais helpers do WP Rocket estão ativos (por exemplo o de tablets como mobile) para que futuras manutenções não removam o comportamento esperado no iOS.
Causa
- A opção Separate cache files for mobile devices (Mobile Cache) está desativada no WP Rocket: sem ela, o plugin serve o mesmo cache para desktop e mobile e o iPhone recebe a versão desktop armazenada.
- Uma camada de cache na frente do WP Rocket (Cloudflare, Varnish ou NGINX) entrega a primeira resposta gravada sem distinguir o dispositivo, então o que foi cacheado primeiro em desktop é devolvido também ao Safari iOS.
- O Cloudflare APO está ativo sem a opção Cache by device type ligada, fazendo a CDN servir uma única resposta para todos os user agents e ignorar a variação mobile do WP Rocket.
- O user agent do Safari no iOS não está sendo reconhecido como dispositivo móvel pela detecção do WP Rocket porque um proxy ou camada intermediária altera ou remove o cabeçalho User-Agent antes de chegar ao PHP.
- O iPad está sendo tratado como desktop: por padrão o WP Rocket não considera tablets como mobile, então o iPad recebe o cache desktop a menos que o helper Set tablets as mobile esteja ativo.
Como resolver
- Ative o cache mobile no WP Rocket: Confirme que o cache mobile está ligado. Pela aba de ferramentas do WP Rocket é possível reativar o recurso caso ele tenha sido desligado, garantindo que o plugin volte a criar arquivos separados para dispositivos móveis.
Painel WP -> Configurações -> WP Rocket -> aba Cache Marque a opção Separate cache files for mobile devices Se estiver desligado, use Painel WP -> Configurações -> WP Rocket -> aba Tools -> Mobile Cache -> Enable Mobile Cache Clique em Salvar alterações e limpe o cache - Limpe o cache e confirme a geração do arquivo mobile: Após ativar a opção, limpe todo o cache para forçar a regeração e acesse o site por um iPhone (ou simulando o user agent do iOS). Em seguida verifique se o arquivo de cache mobile passou a existir na pasta do domínio.
Painel WP -> menu superior -> WP Rocket -> Clear and preload cache Acesse uma página pelo Safari do iPhone para gerar o cache mobile Via FTP ou gerenciador de arquivos, abra wp-content/cache/wp-rocket/seudominio.com/ Confirme a presença de index-mobile.html_gzip (ou index-mobile-webp.html_gzip) - Configure a camada de cache acima do WP Rocket: Se você usa Cloudflare APO, Varnish ou cache de servidor NGINX, ele precisa variar a resposta por tipo de dispositivo; caso contrário, entrega a versão desktop ao iOS. No Cloudflare APO, habilite o cache por tipo de dispositivo; em Varnish ou NGINX, ajuste a regra para considerar o User-Agent ou desative a camada conflitante.
Cloudflare -> Speed -> Optimization -> Automatic Platform Optimization -> ative Cache by device type Se usar Varnish/NGINX, ajuste a VCL/regra para variar por User-Agent ou desative o cache da camada Limpe o cache da CDN e do servidor após o ajuste - Trate o iPad como mobile, se necessário: Por padrão o WP Rocket não considera tablets como dispositivos móveis, então o iPad recebe o cache desktop. Se você precisa servir a versão mobile também ao iPad, instale o helper oficial que define tablets como mobile.
Baixe o helper oficial WP Rocket | Set tablets as mobile Painel WP -> Plugins -> Adicionar novo -> Enviar plugin -> instale e ative o helper Limpe o cache do WP Rocket após ativar - Verifique a entrega do user agent ao PHP: Se mesmo assim o iOS recebe a versão desktop, confirme que o cabeçalho User-Agent do Safari móvel chega íntegro ao PHP. Um proxy reverso ou CDN pode estar removendo ou normalizando o User-Agent antes da detecção do WP Rocket. Use a verificação do código abaixo para inspecionar o que o servidor recebe.
Crie um endpoint de diagnóstico temporário com o código da seção abaixo Acesse pelo Safari do iPhone e confira se o User-Agent contém iPhone ou iPad Se o User-Agent vier vazio ou alterado, ajuste o proxy/CDN para repassar o cabeçalho original
<?php
/**
* Diagnóstico temporário: inspeciona o User-Agent recebido e se o WP Rocket
* classifica o acesso atual como mobile. Acesse pelo Safari do iPhone e remova depois.
* Coloque em um mu-plugin ou no functions.php do tema filho.
*/
add_action( 'wp_footer', 'full_debug_wp_rocket_mobile' );
function full_debug_wp_rocket_mobile() {
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
$ua = isset( $_SERVER['HTTP_USER_AGENT'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) : '(vazio)';
$is_mobile = function_exists( 'wp_is_mobile' ) ? wp_is_mobile() : false;
echo '<!-- FULL WP Rocket mobile debug -->';
echo '<!-- User-Agent: ' . esc_html( $ua ) . ' -->';
echo '<!-- wp_is_mobile: ' . ( $is_mobile ? 'sim' : 'nao' ) . ' -->';
}














