web-dev-qa-db-fra.com

Différence entre la durée de vie minimale du cache et l'expiration des pages mises en cache

Sur Drupal Page de performances, sous le jeu de champs Cache, vous avez deux options. L'une est la durée de vie minimale du cache et l'autre est l'expiration des pages mises en cache.

enter image description here

Quelle est la différence entre ces deux.

35
Gokul N K

J'ai fait les observations suivantes après avoir passé quelques heures. S'il y a des lacunes ou des erreurs, faites-le moi savoir. Je serai heureux de faire des éditions.

Premier observateur qu'aucune des options sous la mise en cache n'est interdépendante. S'ils l'étaient, vous les auriez vus sous différents ensembles de champs (ou comme champs dépendants). Prenez note de cette observation et nous y reviendrons plus tard.

enter image description here

Commençons par la première option Pages de cache pour les utilisateurs anonymesenter image description here

Lorsque vous cochez cette option, vous dites essentiellement à Drupal

Hey Beast écoute, lorsqu'un utilisateur anonyme visite mon site,

  1. Stockez le code HTML généré dans la table de cache
  2. Pour que je puisse afficher le même résultat à tous les utilisateurs car mes pages restent les mêmes pour tous les utilisateurs anonymes.
  3. Et n'effacez pas les caches de page jusqu'à ce que je dis effacer tous les caches.

Même si vous n'activez pas le Cache Pages for anonymous users la page peut toujours être mise en cache par des systèmes de cache externes. Par exemple: Boost

Passons maintenant aux options suivantes que vous utiliseriez généralement.

Expiration des pages mises en cache

enter image description here

  1. Notez que ce paramètre n'a rien à voir avec les tables de base de données ou de cache Drupal.
  2. Lire la description The maximum time an external cache can use an old version of a page. Comme Molot l'a souligné, le mot-clé est externe.
  3. Donc, ce que cette option fait, c'est qu'elle définit le contrôle de cache d'en-tête sur public et la valeur max-age dans l'en-tête sur la valeur spécifiée (1 jour dans ce cas).
  4. Cet en-tête indique aux systèmes de mise en cache external de ne pas appeler le serveur pour cette page jusqu'à l'âge maximal, car ils peuvent afficher cette page à partir de leur propre cache. Après le max-age, le système de mise en cache doit vérifier avec le serveur Drupal pour voir si le contenu a changé.

  5. S'il s'agit d'un serveur Varnish, il n'appelle pas Apache et renvoie la page depuis son cache. Supposons donc que Varnish ait mis en cache une page et que mille utilisateurs différents aient fait une demande sur cette page. Cela signifie donc que 1000 requêtes ont été traitées sans toucher une seule fois au serveur Apache.

Durée de vie minimale du cache enter image description here

Si votre site n'a pas un trafic énorme ou si vous n'êtes pas sûr de ce qu'est cette valeur, il vaut mieux laisser cette valeur nulle.

  1. Cette valeur s'applique non seulement aux pages. Mais tous les objets du cache.
  2. Ce que cette valeur indique est "c'est correct de servir des objets de cache qui sont périmés"
  3. Dans notre cas, la valeur est fixée à 5 minutes.
  4. Si vous avez une page qui répertorie les cinq derniers blogs sur votre page d'accueil. Ce que les valeurs ci-dessus signifient, c'est que si un nouveau blog est créé, il est normal que le blog n'apparaisse pas sur la liste pendant les cinq minutes.
  5. Lorsque cette valeur est définie, pour que le cache soit mis à jour/recréé au minimum, ce temps doit s'être écoulé et une action d'effacement du cache doit être exécutée [Une fonction d'effacement du cache doit être exécutée].
40
Gokul N K

Cet article a un bon aperçu de la terminologie de mise en cache de Drupal: http://www.phase2technology.com/blog/caching-in-drupal/

Résumé des points pertinents:

La durée de vie minimale du cache est souvent mal interprétée car cela signifie que "les pages seront régénérées après un laps de temps". Ce que cela signifie en réalité, c'est que les pages ne seront pas régénérées tant qu'au moins ce temps ne sera pas passé et qu'un événement d'effacement du cache ne s'est produit.

L'expiration des pages mises en cache est également parfois mal interprétée. Cette valeur contrôle ce qui est envoyé en tant que valeur max-age dans un en-tête Cache-Control et informe ainsi les serveurs proxy combien de temps ils peuvent servir la page sans demander à votre Drupal installation pour une nouvelle copie. Cette ne signifie pas que la page sera régénérée après ce délai, cela signifie simplement que le serveur proxy doit vérifier avec Drupal pour voir si une nouvelle version de la page existe après ce délai. Drupal ne régénérera une page qu'après un événement d'effacement du cache.

19
jazzdrive3