(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 :
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.
La livraison d'une page du cache ou la mise en cache d'une page générée dynamiquement dépendent de plusieurs facteurs. Le schéma ci-dessous en donne la logique :
http://www.rouen.fr/fichiers/drupalfr/conditionscache.png
Notes :
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é.