Como verificar se o cache está funcionando na página atual?

9

Alguns módulos desativam silenciosamente o cache em determinadas páginas. Como é a maneira mais fácil de verificar se esse é o caso e também identificar o módulo problemático?

user11153
fonte
Com o cache Boost, é simples, há um comentário em html na parte inferior da página. com outros caches, é um pouco mais interessante.
Mołot 30/09
@ Mołot Estou interessado principalmente no cache padrão do Drupal, mas as instruções para outros caches também são apreciadas.
user11153

Respostas:

13

A maneira mais fácil é provavelmente inspecionar os cabeçalhos de resposta HTTP.

Por exemplo, com a ferramenta de inspeção do DOM do navegador (por exemplo , guia "Rede" do Chrome )

Falta de cache

Aqui estão alguns exemplos de cabeçalhos de resposta do drupal.org mostrando uma falta de cache. Nesse caso, usando Varnish, o cache principal do Drupal também define cabeçalhos semelhantes.

cache falta cabeçalho http

Acerto no cache

Aqui está um que mostra um hit de cache padrão do Drupal:

cache atingiu o cabeçalho http

David Thomas
fonte
Mas o Drupal.org está por trás do Varnish, não é? Não consigo ver os cabeçalhos do X-Cache no meu Drupal acessados ​​diretamente. Ou faria se a página com a qual estou testando fosse armazenável em cache?
Mołot 30/09
@ Mołot Eu posso ver os cabeçalhos do verniz se estiver desconectado.
Letharion
Para o meu site Drupal 7, de fato, vejo o cabeçalho, X-Drupal-Cache: HITmas no meu site Drupal 6 não vejo nada. Poderia ser removido por proxy reverso?
user11153
@ user11153 sim, o D6 não parece definir o cabeçalho HTTP X-Drupal-Cache lá. No entanto D7 faz isso de_drupal_bootstrap_page_cache
David Thomas
@DavidThomas Então, o que verifica o status do cache no Drupal 6? Existem alternativas? E obrigado pelas instruções para D7.
user11153
0

Adicionando cabeçalhos de cache ao cache padrão do Drupal 6

Infelizmente, isso envolve alguns hackers principais.

No arquivo, includes/bootstrap.incaltere as linhas de

      // If there is a cached page, display it.
      if ($cache) {
        drupal_page_cache_header($cache);
        // If the skipping of the bootstrap hooks is not enforced, call hook_exit.
        if ($cache_mode != CACHE_AGGRESSIVE) {
          bootstrap_invoke_all('exit');
        }
        // We are done.
        exit;
      }
      // Prepare for non-cached page workflow.
      drupal_page_header();
      break;

para

      // If there is a cached page, display it.
      if ($cache) {
        header('X-Drupal-Cache: HIT');
        drupal_page_cache_header($cache);
        // If the skipping of the bootstrap hooks is not enforced, call hook_exit.
        if ($cache_mode != CACHE_AGGRESSIVE) {
          bootstrap_invoke_all('exit');
        }
        // We are done.
        exit;
      }
      // Prepare for non-cached page workflow.
      header('X-Drupal-Cache: MISS');
      drupal_page_header();
      break;

e o restante das instruções é exatamente como na resposta de David .

user11153
fonte