29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don




Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

View caching -- Système de cache des vues

Date de publication: le mardi 8 mai 2007 à 16h50
Dernière modification: par Pascal BOYER le lundi 14 février 2011 à 12h19

28/09/2010 10:52

versions 3.9, 3.10, 4.x, 4.4

Caching is a widely used technique supposing that frequently used information is retained in a temporary storage area for rapid access. It is extremely effective when the original data is expensive (usually in terms of access time) to fetch or compute/generate relative to reading the cache. Once the data is stored in the cache, future use can be made by accessing the cached copy rather than re-fetching or re-computing the original data, so that the average access time is lower. 
La mise en cache est une technique largement utilisée consistant à stocker temporairement des informations fréquemment demandées afin d'y accéder plus rapidement. Cette technique est extrêmement efficace lorsque rechercher ou calculer/générer les données originales coûtent cher (en temps d'accès) comparativement au temps de lecture du cache. Une fois les données stockées dans le cache, leur utilisation future peut se faire simplement par accès aux copies mises en cache plutôt qu'en re-cherchant ou re-calculant les données originales. On obtient ainsi un temps moyen d'accès aux informations plus faible.

eZ Publish includes a powerful caching mechanism that allows to improve system performance. This chapter describes a fundamental part of the cache systems in eZ Publish, called content view caching ("view caching" for short). This mechanism only works for view and pdf views of the content module.
eZ publish intègre un puissant mécanisme de mise en cache permettant d'augmenter les performances du système. Ce chapitre décrit un des aspects fondamentaux des systèmes de cache de eZ publish: la mise en cache des vues des contenus (que l'on nommera plus simplement par la suite cache des vues ou cache de vues  [ 1 ]). Il est à noter que ce mécanisme ne fonctionne qu'avec les vues view  et pdf  du module content .

Node view cache / Cache de vue d'un noeud

This subsection describes how the view caches are generated when the nodes are accessed.
Cette sous-section décrit comment les caches de vue sont générés lorsqu'on accède aux noeuds.

Whenever eZ Publish is requested to output information about a node (either by a system URL or a virtual URL), it executes the program code that is associated with the "view" view of the "content" module. Upon completion, the view returns a result to the module, which in turn returns it to the rest of the system. eZ Publish automatically generates an array called "module_result" containing information about which module that was run, which view that was called, the output that was produced and so on.
Chaque fois qu'il est demandé à eZ publish d'afficher des informations sur un noeud (par le biais, soit d'un URI système soit d'un URI virtuel) il exécute le code associé à la vue view du module content. L'exécution de ce code terminée, la vue renvoie un résultat au module qui à son tour le renvoie au reste du système. eZ publish génère automatiquement un tableau appelé module_result contenant des informations sur le module qui vient d'être exécuté, sur la vue qui a été appelée, sur la sortie (le résultat) qui a été produite, etc...

The actual output of the view (i.e. the XHTML code generated using one of the node templates) is put to "$module_result.content" and is included in the pagelayout by accessing this template variable:
Le véritable résultat de la vue (c'est à dire le code XHTML généré en utilisant un des templates de noeuds ) est placé dans la variable $module_result.content puis inclus dans le template principal pagelayout.tpl  en accédant à la variable de template suivante:

{$module_result.content}

When the pagelayout is rendered, the {$module_result.content} part will be replaced with the actual output. If view caching is enabled, the entire result of the module will be cached. This means that the contents of the "module_result" variable will be put into a cache file located in the "var/example/cache/content" directory (where "example" is usually the name of the siteaccess that is being used - it is set by the "VarDir" directive in "site.ini" or an override).
Lorsque le contenu du template pagelayout.tpl est généré, la partie { $module_result.content} est remplacée par le vrai contenu. Si le cache de vues est activé, le résultat de l'exécution du module est entièrement mis en cache. Cela signifie que le contenu de la variable $module_result est mis en cache dans un fichier placé dans le répertoire var/exemple/cache/content/ (où exemple est normalement le nom du siteaccess qui est utilisé - ce siteaccess est défini par le paramètre VarDir du fichier de configuration site.ini ou de l'une de ses surcharges).

Please note that eZ Publish creates multiple view caches for the nodes based on roles and user preferences. This means that for example different users (who are logged in, with different permissions/preferences) will be served different caches while anonymous users and users with the same type of permissions/preferences will be served the same file. In other words, when view caching is on, the "view" view of the "content" module will only be run if the system is unable to locate a view-cached version of the result - otherwise a cached version will be inserted in the page layout. Please note that the pagelayout itself is not cached by default.
Notez que eZ publish crée, pour les noeuds, de multiples caches de vues en fonction des rôles et des préférences utilisateur. Cela signifie, par exemple, que différents utilisateurs (logués et ayant des droits et/ou des préférences différentes) seront servis par différents caches alors que les utilisateurs anonymes ou ceux ayant le même type de permissions et/ou de préférences seront servis par le même fichier. En d'autres termes, lorsque le système de cache de visualisation est activé, la vue view du module content ne sera exécutée que si le système ne trouve pas de version "cachée" du résultat - si une version "cachée" existe alors elle sera insérée dans la mise en page. Notez que par défaut ce template n'est pas mise en cache.

Another thing worth noticing is that the view caches are also depending on some other parameters. For example:
L'autre chose intéressante à noter est que les caches de vues dépendent également d'autres paramètres, comme par exemple:

  • View mode 
    du mode de vue
  • Language 
    de la langue
  • View parameters in the URL 
    des parmètres de vue passés dans l'URI
  • Layout (for example print will be in different cache files) 
    de la mise en page (par exemple la mise en page d'impression sera servie par des fichiers de cache différents)
  • etc..

Exemple

Let's say that node 46 is the company about page and the custom template "aboutpage.tpl" overrides the default "node/view/full.tpl" template for this particular node.
Supposons que le noeud 46 soit la page de présentation de l'entreprise et que le template personnalisé aboutpage.tpl surcharge le template par défaut node/view/ full.tpl  pour ce noeud 46.

Both the virtual URL "http://www.mysite.com/company/about" and the system URL "http://www.mysite.com/content/view/full/46" point to this page. When one of these URLs is requested, the system will execute the "view" view of the "content" module using "46" as the ID number of the node and "full" as the view mode. The resulting XHTML code containing the company about information will be generated using the "aboutpage.tpl" template. The output will be put to "$module_result.content" and then will be included in the pagelayout.
Les URI virtuel http://www.mysite.com/company/about et système http://www.mysite.com/content/view/full/46 pointent vers la même page et que l'on utilise l'un ou l'autre de ces deux URI, le système exécute la vue view du module content et utilise 46 comme numéro de ID du noeud et full comme mode de vue . Le code XHTML résultant, contenant des informations au sujet de l'entreprise, sera généré en utilisant le template aboutpage.tpl. Le résultat sera alors placé dans la variable $module_result.content puis inclu dans le template pagelayout.tpl.

If view caching is enabled for the "full" view mode, the entire result of the module will be cached in a file. The cache files get long names like for example "46-122bc591bf62e87a4e9ddcb5ba352bc4.cache". Next time the company about page is being accessed, the system will not go through the burden of executing the "view" view of the "content" module (generating the result, etc.) but load the cache file instead.
Si le cache de vues est activé pour le mode de vue full, le résultat du module sera entièrement placé dans un fichier de cache. Les fichiers de cache ont des noms longs comme par exemple 46-122bc591bf62e87a4e9ddcb5ba352bc4.cache. La prochaine fois que la page d'information sur l'entreprise sera demandée, le système n'ira pas directement exécuter la vue view du module content (pour générer le résultat etc...) mais chargera, à la place, le fichier de cache.

The $node variable / La variable $node 

In eZ Publish versions prior to 3.9, the "$node" variable might be present in the page layout when view caching is disabled. From 3.9, this variable is not available in the page layout, regardless of whether view caching is enabled or not. It is recommended to use $module_result for fetching the necessary information (for example, "$module_result.node_id" outputs the ID number of the node that is being viewed).
Dans les versions antérieures aux versions 3.9 de eZ Publish, la variable $node  pouvait être présente dans la mise en page lorsque le cache de vues était désactivé. Depuis la version 3.9 et indépendamment du fait que le cache de vues soit ou non activé, cette variable n'est plus disponible dans la mise en page. Il est donc recommandé d'utiliser la variable $module_result  pour rechercher les informations nécessaires (par exemple, $module_result.node_id renvoie le numéro de ID du noeud courant/affiché).

PDF cache / Cache des fichiers PDF

The following text explains how the view cache is generated when a PDF version of a site page (a content node) is being accessed. Note that the PDF export mechanism has been deprecated in eZ Publish 4.0 and will be removed in future releases.
Le paragraphe qui suit explique comment est généré le cache de vue lorsque la version PDF d'une page (un noeud de contenu) du site est demandée. Retenez que le mécanisme d'export au format PDF est déprécié dans les versions 4.0 de eZ Publish est sera supprimé dans les versions futures.

Whenever eZ Publish is requested to generate a PDF version of a node, it executes the program code that is associated with the "pdf" view of the "content" module. Instead of inserting the output into the pagelayout via $module_result.content, the system will fetch the actual page content (i.e. the attributes of the object that is encapsulated by the specified node) using the "pdf.tpl" template and generate a PDF file using "execute_pdf.tpl". These default templates are located in the "templates/node/view" directory of the standard design.
Chaque fois qu'il est demandé à eZ publish de générer la version PDF d'un noeud, le système exécute le code associé à la vue pdf  du module content. Plutôt que d'insérer le resultat de l'exécution du code dans le template pagelayout.tpl via la variable $module_result.content, le système recherche le vrai contenu de la page (c'est à dire le contenu des attributs de l'objet encapsulé par le noeud spécifié) en utilisant le template pdf.tpl et génère un fichier PDF en utilisant le template execute_pdf.tpl. Ces templates par défaut sont placés dans le répertoire templates/node/view/ du design standard.

If view caching is enabled for the "pdf" view, the resulting PDF file will be cached. This means that the system will save a copy of the actual PDF document into a cache file located in the "var/example/cache/content" directory (where "example" is usually the name of the siteaccess that is being accessed - it is controlled by the "VarDir" directive in "site.ini" or an override).
Si le cache de vues est activé pour la vue pdf, le fichier PDF résultant est mis en cache, ce qui signifie que le système place une copie du fichier PDF original dans le fichier de cache situé dans le répertoire var/exemple/cache/content/ (où exemple est normalement le nom du siteaccess courant - ce siteaccess est défini par le paramère VarDir du fichier de configuration site.ini ou de l'une de ses surcharges).

Exemple

If node 46 is the company about page, then accessing the URL "http://www.mysite.com/content/pdf/46" will lead to executing the "pdf" view of the "content" module. The system will generate a PDF version of the company about page and display it to the user.
Si le noeud 46 correspond à la page de présentation de l'entreprise, alors l'URI http://www.mysite.com/content/pdf/46 engendre l'exécution de la vue pdf du module content. Le système génère alors une version PDF de la page d'information sur l'entreprise et l'affiche.

If view caching is enabled for the "pdf" view, the resulting PDF document will be cached in a file, for example called "46-3579d18de31e99fc84d2d9a5f113c3be.cache". Please note that this file can be opened using a PDF reader (in some cases it would have to be renamed to .pdf).
Si le cache de vues est activé pour la vue pdf, le fichier PDF résultant est mis en cache dans un fichier appelé par exemple 46-3579d18de31e99fc84d2d9a5f113c3be.cache. Notez que ce fichier peut être ouvert avec un lecteur PDF (dans certains cas il sera peut-être nécessaire de modifier son extension en .pdf).

 [ 1 ]: La traduction Cache de visualisation a été retenue par l'équipe de traducteurs pour traduire View cache en français.

Commentaires