Comprendre le cache de page

Onglets principaux

La documentation Drupal 6 n'est plus maintenue et en cours de dépublication.

(je n'ai pas vérifié si ces informations étaient également valables pour les versions 5 et 6. Je ne pense cependant pas qu'il y ait de gros écarts)

Drupal dispose d'un mécanisme de cache évolué (mise en mémoire d'informations précédemment calculées). Tellement évolué qu'il n'est pas toujours évident d'en comprendre le fonctionnement.

Il faut tout d'abord distinguer 2 niveaux :

  • le cache,
  • le cache de page.

N'importe quel module peut utiliser le cache pour son propre usage au moyen des fonctions cache_set et cache_get. N'importe quel type de données peut être stocké dans le cache, que ce soit du code HTML, du XML ou encore des données binaires. Tout module effectuant des calculs ou des requêtes complexes peut tirer parti de ces fonctions.

Le cache de page travaille au niveau supérieur : c'est carrément la page entière et ses entêtes HTTP (headers) qui sont stockées.

Notes :

  • Les pages sont cachées selon l'URI. Si vous utilisez les alias, node/78 et alias/vers/node/78 seront cachées indépendamment bien qu'il s'agisse de la même page,
  • Le mécanisme de cache de page est complètement désactivé si l'utilisateur est identifié (mais pas le mécanisme de cache standard).
  • La table cache de Drupal peut être vidée sans hésitation puisque, par définition, toutes ses données seront recalculées à la volée.
  • Les pages contenant des formulaires ne sont pas gênées par le cache de page car les données sont transmises par méthode POST et chaque message en attente empêche l'utilisation du cache.
  • Les informations mises à jour depuis le Cron ne seront disponibles aux utilisateurs anonymes qu'après écoulement de la durée de vie minimum dans le cas du cache de page.

La page admin/settings permet d'activer ou désactiver le cache de page et d'indiquer la durée de vie minimum d'un élément du cache. Ces deux paramètres ne sont pas liés directement. La durée de vie minimum est utilisée même si le cache de page est désactivé puisque le cache de page n'est qu'une utilisation particulière du cache de Drupal.

Cette durée indique le temps pendant lequel Drupal conservera un objet dans le cache. Tant que cette durée ne se sera pas écoulée, l'objet sera resservi. Si l'objet est redemandé au-delà de cette durée de vie, il sera recalculé.

Version de Drupal :