Comment vérifier que le cache fonctionne sur la page actuelle?

9

Certains modules désactivent silencieusement la mise en cache sur certaines pages. Comment est le moyen le plus simple de vérifier que c'est le cas et d'identifier également le module problématique?

user11153
la source
Avec Boost cache c'est simple, il y a un commentaire html en bas de page. avec d'autres caches, c'est un peu plus intéressant.
Mołot
@ Mołot Je suis principalement intéressé par le cache Drupal standard, mais les instructions aux autres caches sont également appréciées.
user11153

Réponses:

13

Le moyen le plus simple consiste probablement à inspecter les en-têtes de réponse HTTP.

Par exemple, avec l'outil d'inspection de votre navigateur DOM (par exemple, l'onglet "Réseau" de Chrome )

Cache Miss

Voici quelques exemples d'en-têtes de réponse de drupal.org montrant un cache manquant. Dans ce cas, l'utilisation de Varnish, mais le cache Drupal de base définit également des en-têtes similaires.

cache miss http header

Cache hit

En voici un montrant un hit de cache Drupal standard:

cache hit http header

David Thomas
la source
Mais Drupal.org est derrière Varnish, n'est-ce pas? Je ne vois pas les en-têtes X-Cache sur mon Drupal accessibles directement. Ou je le ferais si la page avec laquelle je le testais pouvait être mise en cache?
Mołot
@ Mołot Je peux voir les en-têtes Varnish si je suis déconnecté.
Letharion
Pour mon site Drupal 7, je vois bien l'en-tête, X-Drupal-Cache: HITmais sur mon site Drupal 6, je ne vois rien. Il pourrait être supprimé par proxy inverse?
user11153
@ user11153 oui, D6 ne semble pas y définir l'en-tête HTTP X-Drupal-Cache. Cependant D7 le fait dans_drupal_bootstrap_page_cache
David Thomas
@DavidThomas Alors, qu'est-ce qui vérifie l'état du cache dans Drupal 6? Existe-t-il des alternatives? Et merci pour les instructions à D7.
user11153
0

Ajout d'en-têtes de cache au cache par défaut de Drupal 6

Malheureusement, cela implique un piratage de base.

Dans les includes/bootstrap.inclignes de changement de fichier 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;

à

      // 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;

et le reste des instructions, c'est exactement comme dans la réponse de David .

user11153
la source