🎉 USE O CUPOM FIM.DE.SEMANA.FULL | 20% OFF acima de R$ 100,00

Como corrigir o cache do WP Rocket em páginas de curso do Tutor LMS no WordPress

Time Full Services Time Full Services
Tipo Performance & Velocidade
Nome do erro Cache do WP Rocket servindo página de curso errada no Tutor LMS EN: WP Rocket caching dynamic Tutor LMS course pages
Severidade Atenção
Descrição O cache do WP Rocket em páginas de curso do Tutor LMS quebra quando o WP Rocket serve uma versão estática de uma página que deveria ser personalizada por aluno, fazendo o progresso, o player de aula ou o status de matrícula aparecerem errados para quem está logado.

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.
Antes de começar: Antes de mexer nas regras de cache ou adicionar o snippet, faça um backup do site (arquivos e banco de dados) ou aplique primeiro em um ambiente de staging. Uma regra de exclusão errada pode deixar todo o catálogo de cursos fora do cache e derrubar a performance da home.

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

  1. 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/
  2. 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)
  3. No campo 'Never Cache URL(s)' adicione uma rota por linha:
    /dashboard/(.*)
    /courses/(.*)
    /lesson/(.*)
  4. 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'
  5. Adicione o identificador do cookie de sessao, um por linha:
    wordpress_logged_in_
  6. 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
  7. 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
<?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;
}

Perguntas frequentes

Por que o WP Rocket faz um aluno ver o progresso de outro no Tutor LMS
Porque o WP Rocket serviu a versão em cache da página gerada pelo primeiro visitante para todos os outros. As páginas de curso são dinâmicas e mudam por aluno, entao precisam ser excluidas no campo Never Cache URL(s) ou servidas com o User Cache ativo.
Quais URLs do Tutor LMS devo excluir do cache do WP Rocket
Exclua as rotas que mudam por aluno: a base de cursos, o player de aula e o painel do aluno, normalmente /courses/, /lesson/ e /dashboard/. Adicione cada uma no campo Never Cache URL(s) da aba Advanced Rules, usando Regex como /dashboard/(.*) para pegar as subpaginas.
Excluir a página de curso do cache deixa o site mais lento
Segundo a documentação do WP Rocket, ao excluir uma URL do cache você também a exclui de todas as outras otimizacoes. Isso afeta apenas as páginas internas dinâmicas do curso; a vitrine pública e o restante do site continuam cacheados e rapidos.
Preciso ativar o cache para usuários logados no Tutor LMS
Se os alunos navegam autenticados na maior parte do tempo, ative o 'Enable caching for logged-in WordPress users' (User Cache) na aba Cache. Ele cria uma versão de cache por usuário e evita que um aluno receba a página de outro sem abrir mao da velocidade.
Como o cookie de sessao ajuda a corrigir o cache do curso
Ao informar o cookie de login no campo Never Cache Cookies, o WP Rocket deixa de servir a copia estática para quem tem sessao ativa. O cookie padrão do WordPress para usuários logados comeca com wordpress_logged_in_.
Limpei o cache mas o progresso do aluno continua errado
Se o problema persiste após limpar o cache, a URL provavelmente ainda não esta no Never Cache URL(s) ou o User Cache esta desligado. Confirme as regras de exclusão na aba Advanced Rules e teste com duas contas de aluno diferentes em janelas separadas.
O WP Rocket não exclui as páginas do Tutor LMS sozinho
Não. O WP Rocket exclui automaticamente carrinho e checkout de alguns plugins de e-commerce, mas não reconhece as páginas internas do Tutor LMS. Por isso a exclusão do /dashboard/, /courses/ e /lesson/ precisa ser feita manualmente.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes