Como corrigir o cache do WP Rocket em páginas de curso do Tutor LMS no WordPress
O que é cache do WP Rocket em páginas de curso do Tutor LMS?
O WP Rocket gera um arquivo HTML estático de cada página e o serve direto, sem passar pelo PHP, para deixar o site mais rápido. Isso funciona para páginas públicas e iguais para todo mundo, como a vitrine de cursos. O problema é que as páginas internas do Tutor LMS, o player de aula, a tela de progresso, o dashboard do aluno e a área de quizzes, são dinâmicas: o conteúdo muda conforme o aluno logado e a sua matrícula. Quando o WP Rocket cacheia essas páginas, ele congela a versão do primeiro visitante e entrega a mesma cópia para os demais.
Na prática, o aluno A pode ver o progresso do aluno B, o botão de matrícula aparece para quem já comprou, uma aula concluída volta a aparecer como pendente, ou a tela mostra conteúdo desatualizado. Segundo a documentação oficial do WP Rocket, páginas que dependem do usuário logado não devem ser cacheadas na versão pública; o caminho correto é excluir essas URLs do cache pelo campo Never Cache URL(s) e, se o site usa cache para logados, ativar o User Cache. O cache do WP Rocket em páginas de curso do Tutor LMS volta ao normal quando essas rotas dinâmicas saem do cache estático.
Como identificar
- Um aluno vê o progresso, o nome ou as aulas concluídas de outro aluno ao abrir a área do curso, porque a página cacheada do primeiro visitante é servida para todos.
- O botão ‘Matricular’ ou ‘Inscrever-se’ continua aparecendo para quem já comprou o curso, ou some para quem ainda não comprou.
- O player de aula mostra a aula travada, com a mensagem de conteúdo restrito, mesmo o aluno estando matriculado e logado.
- O painel do aluno (Dashboard do Tutor LMS) exibe dados desatualizados: aula marcada como concluída volta a aparecer como pendente após recarregar.
- A barra de progresso do curso fica congelada em uma porcentagem antiga e só atualiza depois de limpar o cache do WP Rocket manualmente.
Como prevenir
- Ao instalar o WP Rocket em um site com Tutor LMS, já cadastre as rotas /dashboard/, /courses/ e /lesson/ no Never Cache URL(s) antes de liberar o acesso dos alunos.
- Mantenha o cookie de sessao do aluno no campo Never Cache Cookies sempre que trocar de plugin de login social ou de checkout, para não perder a exclusão.
- Decida desde o inicio se os alunos navegam logados e, se sim, mantenha o User Cache ativo em vez de cachear a versão pública das páginas de curso.
- Após cada atualização do Tutor LMS ou do WP Rocket, teste a área do curso com duas contas de aluno para garantir que nenhuma página dinâmica voltou ao cache estático.
Causa
- O WP Rocket está cacheando as URLs dinâmicas do Tutor LMS (a base de cursos /courses/, o player de aula /lesson/ e o /dashboard/ do aluno), que não constam no campo Never Cache URL(s) da aba Advanced Rules e por isso são servidas como HTML estático.
- A opção de cache para usuários logados (User Cache) está desligada e o aluno acessa a área do curso autenticado: o WP Rocket entrega a versão pública cacheada em vez de gerar a página personalizada do aluno.
- O cookie de sessão do Tutor LMS que identifica o aluno e a matrícula não está listado em Never Cache Cookies, então o WP Rocket ignora a diferença entre alunos e serve uma cópia única.
- A integração nativa do WP Rocket exclui automaticamente carrinho e checkout de alguns plugins de e-commerce, mas não reconhece as páginas internas do Tutor LMS, que precisam ser excluídas manualmente do cache.
- Uma versão antiga do cache estático ficou salva antes da matrícula do aluno e o WP Rocket continua servindo esse arquivo porque a página não está na lista de exclusão e o cache só é regenerado após expirar o Cache Lifespan.
Como resolver
- Identifique as rotas dinâmicas do Tutor LMS: Liste as URLs que mudam por aluno: a base dos cursos, o player de aula, o painel do aluno e os quizzes. São essas rotas que não podem virar HTML estático. Use a parte da URL após o domínio para montar as regras de exclusão.
/courses/ /course/ /lesson/ /dashboard/ /quiz/ - Exclua as páginas de curso em Never Cache URL(s): No painel do WP Rocket, vá para a aba Advanced Rules e cole as rotas dinâmicas no campo Never Cache URL(s), uma por linha. Segundo a doc oficial, ao excluir uma URL do cache você também a exclui das demais otimizacoes, o que é o comportamento desejado para conteúdo personalizado. O campo aceita Regex para pegar todas as subpáginas.
Painel WP -> Configurações -> WP Rocket -> aba Advanced Rules (Regras Avancadas) - No campo 'Never Cache URL(s)' adicione uma rota por linha:
/dashboard/(.*) /courses/(.*) /lesson/(.*) - Exclua o cookie de sessão do aluno em Never Cache Cookies: Ainda na aba Advanced Rules, no campo Never Cache Cookies, informe o ID do cookie que o Tutor LMS ou o WordPress usa para a sessão do aluno logado. Assim o WP Rocket não serve a copia estática para quem tem sessao ativa. O cookie padrão de login do WordPress comeca com wordpress_logged_in_.
Painel WP -> WP Rocket -> Advanced Rules -> campo 'Never Cache Cookies' - Adicione o identificador do cookie de sessao, um por linha:
wordpress_logged_in_ - Ative o User Cache se os alunos navegam logados: Se a maior parte do acesso ao curso é feita por alunos autenticados, ative o cache para usuários logados (User Cache) na aba Cache. Ele cria uma versão de cache separada por usuário, evitando que um aluno receba a página de outro, sem perder a performance.
Painel WP -> WP Rocket -> aba Cache Marque 'Enable caching for logged-in WordPress users' (Ativar cache para usuários logados) Salve as alterações - Limpe o cache e valide com dois alunos: Apague o cache estático antigo para que as novas regras valham e teste com duas contas de aluno diferentes em janelas separadas, conferindo que cada um ve o próprio progresso e a própria matricula.
Painel WP -> barra superior -> WP Rocket -> Limpar cache (Clear cache) Abra o curso com o Aluno A em uma janela normal e o Aluno B em uma janela anonima Confirme que o progresso e o status de matricula de cada um aparecem corretos
<?php
add_filter( 'rocket_cache_reject_uri', 'full_tutor_lms_no_cache' );
function full_tutor_lms_no_cache( $uris ) {
// Rotas dinamicas do Tutor LMS que nao podem virar HTML estatico.
$uris[] = '/dashboard/(.*)';
$uris[] = '/courses/(.*)';
$uris[] = '/lesson/(.*)';
$uris[] = '/quiz/(.*)';
return $uris;
}














