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?
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 onglet "Réseau" de Chrome )
Échec du cache
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 noyau Drupal cache définit également des en-têtes similaires.
Accès au cache
En voici un montrant un Drupal hit hit:
Malheureusement, cela implique un piratage de base.
Dans le fichier includes/bootstrap.inc
changer les lignes 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 .