web-dev-qa-db-fra.com

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?

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 de base dans/admin/config/development/performance font-ils automatiquement une partie de cela et ces "paramètres supplémentaires" dans les vues sont si je veux remplacer le comportement de mise en cache par défaut de drupal core?

enter image description here

23
Nigel Waters

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; les 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 dans 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 efface le cache des vues lors de la modification du contenu. Si vous voulez aller plus loin, vous pouvez également consulter Actions de cache , je recommanderais Rules 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 Gestionnaire de pages et 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 .

38
doublejosh

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

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 le 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
5
googletorp

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.

3
Dave Bruns

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

2
Guy Schneerson