Les vues sont-elles mises en cache via les principaux mécanismes de mise en cache ou dois-je définir la mise en cache directement dans chaque vue?

23

Je vois qu'il y a des paramètres de cache dans chacune de mes vues. Dois-je les définir ou les mécanismes de mise en cache du noyau dans / admin / config / development / performance font-ils automatiquement une partie de cela et ces "paramètres supplémentaires" dans les vues le sont si je veux remplacer le comportement de mise en cache par défaut de Drupal Core?

entrez la description de l'image ici

Nigel Waters
la source
Je suis curieux de savoir exactement cette question. Les paramètres de cache spécifiques aux vues remplacent-ils les paramètres de mise en cache des performances de Drupal Core? Logiquement, je pense que ce serait le cas, mais cela ne peut pas nécessairement être supposé.
David Csonka
J'ai commencé une prime pour cela, car je voudrais vraiment mieux comprendre cela.
David Csonka

Réponses:

38

QUOI: La mise en cache des performances de base stocke et sert toute la page rendue avec un identifiant de cache de l'URL. La mise en cache des vues va au-delà de cela pour ne mettre en cache que la sortie de la vue.

POURQUOI: C'est génial pour les utilisateurs connectés; d'autres blocs de la page peuvent être plus dynamiques, mais la vue n'a pas à exécuter une requête à chaque fois pour chaque utilisateur ... juste l'utilisateur occasionnel qui génère le cache de page à l'expiration de la durée de vie du cache.

PARAMÈTRES: Permettre à la "sortie rendue" d'être plus fraîche que la requête est utile pour des choses comme marquer le contenu comme nouveau, sinon il suffit de les faire correspondre.

GRANDE IMAGE: Drupal sert la page dynamiquement, en utilisant un serveur pour créer des pages en PHP et accéder à une base de données (ou cache en mémoire). Cela permet des fonctionnalités impressionnantes et la vitesse de l'éditeur de contenu ... mais le compromis doit comprendre la mise en cache et le faire correctement.

MODULES!

Il y a aussi un joli module Views Content Cache qui vide le cache des vues lors de la modification du contenu. Si vous souhaitez aller plus loin, vous pouvez également consulter les actions de cache , je recommande les règles pour affiner cela.

De plus, Blockcache Alter vous permet de définir des options de mise en cache "par rôle", page, utilisateur, etc. pour chaque bloc de votre site.

Vous pouvez également ajouter un gestionnaire de pages et des panneaux . Cela vous permet de faire des choses intéressantes comme définir le cache "par utilisateur", "par rôle", ou un certain nombre d'autres configurations très utiles. Bien que j'évite personnellement les panneaux.

DOCUMENTATION: Pour la mise en cache et les performances en général, consultez la page Drupal.org .

doublejosh
la source
Cette réponse est vraiment bonne. Voté. J'ai ajouté une section sur le gestionnaire de pages et les panneaux, et maintenant la réponse pourrait être presque complète.
Letharion
La «mise en cache des blocs» de Core Performance doit-elle être activée pour que la mise en cache spécifique aux vues fonctionne?
David Csonka
Merci d'avoir ajouté un peu sur le gestionnaire de pages / panneaux - car après avoir ajouté la prime pour cela, j'ai réalisé que j'étais également curieux de la mise en cache des mini-panneaux. Je me demandais si les performances de base "Mise en cache de bloc" étaient prioritaires ou devaient être activées pour que la mini-mise en cache simple soit efficace.
David Csonka
1
La mise en cache des blocs mettrait en effet en cache la sortie des blocs quels que soient vos paramètres de mise en cache des vues ... comme le cache des pages. Si vous avez une durée de vie de cache de page déconnectée de 12 heures, le cache d'affichage n'a pas d'importance car ces pages ne sont pas rendues à nouveau, elles sont simplement servies à partir du cache.
doublejosh
1
D'un autre côté, si j'active la mise en cache du bloc central, Drupal imposera les mêmes conditions de mise en cache à tous mes blocs sur l'ensemble de mon site, non? Étant donné que la mise en cache de Core Drupal Block a une priorité élevée sur les paramètres de mise en cache du bloc de vues? Cela ne semble être qu'un bon scénario si vous n'avez pas de contenu qui doit être actualisé de manière cohérente.
David Csonka
4

Views utilise les API de cache Drupal mais il crée son propre cache qui n'est pas lié au cache de page / bloc Drupal normal.

Vues met en cache la définition de la vue elle-même avec la vue rendue elle-même. La vue rendue peut être mise en cache de deux manières, soit le résultat de la requête, soit le code HTML réel de la vue. Normalement, vous voulez mettre en cache le code HTML généré car c'est la plus efficace en termes de performances. Dans certains cas, lorsque vous souhaitez modifier la sortie en fonction de l'utilisateur connecté, la mise en cache de la requête peut également être très efficace.

Les tables que Views utilise pour stocker le cache sont les suivantes:

  • cache_views
  • cache_views_data
googletorp
la source
Alors, puis-je désactiver le paramètre de mise en cache du bloc de base Drupal dans admin / config / development / performance, mais activer individuellement les caches de bloc d'affichage de vues et continuer à faire fonctionner correctement ces caches de bloc de vues?
David Csonka
1
@DavidCsonka Oui, vous pouvez le faire. La mise en cache du bloc serait plus efficace que la mise en cache de la vue, mais uniquement par une petite marge.
googletorp
Ahh, c'est bon à savoir. Mais, utiliser uniquement les paramètres de mise en cache des vues me donnerait un contrôle plus précis sur la façon dont le bloc de vues est mis en cache, non? Si j'utilise le Core Block Caching à la place, il impose essentiellement un ensemble de paramètres de mise en cache sur chaque bloc de mon site? Correct?
David Csonka
1
La mise en cache des vues (bloc ou page) vous permet de contrôler la mise en cache de l'ensemble de listes de résultats. La mise en cache des blocs concerne la sortie du bloc complet. Oui, la mise en cache des blocs de base est un paramètre à l'échelle du site, mais vous pouvez utiliser Block Cache Alter pour modifier cela de manière très granulaire par bloc.
doublejosh
3
@doublejosh Dans Drupal 7, vous pouvez définir comment le cache de blocs doit fonctionner, à l'échelle du site, par rôle, par page, l'utilisateur de la page est les options que je crois. Comme il s'agit de la mise en cache à un niveau supérieur, ses performances sont plus efficaces.
googletorp
3

Il existe maintenant un module intéressant appelé vues cache bully qui met automatiquement en cache toutes les vues (résultats de requête et sortie), à ​​l'exception des vues avec des formulaires exposés. Le module vous permet également d'exclure manuellement des vues de sa mise en cache. Cela permet de définir la mise en cache pour toutes les vues (sauf celles exclues) à partir d'un point central.

Dave Bruns
la source
2

Drupal 7 fournit la mise en cache des pages, mais la mise en cache des pages ne fonctionne que pour les utilisateurs anonymes et ne met pas en cache les vues

La mise en cache des vues fonctionne cependant pour les utilisateurs anonymes et connectés

Guy Schneerson
la source