Le cache de Joomla 1.5 expliqué
La gestion et l'utilisation du cache de Joomla 1.5, ou comment augmenter la vitesse de chargement de votre site Joomla.
Traduction française, par Thierry Tardif, autorisée par the Art of Joomla, Andrew Eddie, Joomla Caching Explained. Ce tutoriel a été mis à jour pour la version Joomla 3 : Le cache de Joomla 3 expliqué
Si vous êtes sous Joomla 3, retrouverez la traduction & la mise à jour de cet article ic.
Joomla à trois niveaux de cache qui peuvent être utilisés pour améliorer la vitesse de téléchargement de votre site Joomla 1.5 (jusqu'à un facteur 8 dans des conditions idéales).
N'importe quel système de gestion de contenu (SGC, en anglais CMS) sollicite le serveur web, Joomla n'y fait pas exception, si tant est que vous ayez correctement hébergé votre site Joomla. Cependant la plus part des sites internet ont des contenus qui changent peu souvent, pour lesquels ont peu utiliser des techniques de cache afin d'éviter de réinventer le fil à couper le beurre (ou peut être le contenu) chaque fois qu'une page est visitée. Cet article décrit les trois niveaux de cache disponible sur un site Joomla 1.5.
L'idée derrière le cache est qu'une fois que vous avez sollicité un composant, un module ou même la construction d'une page complète, il est astucieux d'en faire une copie que l'on réutilisera si possible. Par défaut Joomla ne cache aucun contenu. Par conséquent chaque fois que quelqu'un visite votre page, toutes les calculs réalisés pour construire cette page sont refaits encore et encore même si il n'y a rien à changer à ce que voit l'internaute. Pour éviter cela, Joomla possède trois niveaux de cache :
- La cache de page
- Le cache de vue
- Le cache de module
Le cache de page
Pour le cache de page Joomla fait une copie entière de la page la première fois qu'elle est visitée. Si cette page est de nouveau visitée, Joomla prend cette copie sauvegardée et l'affiche directement, évitant une grande partie du code et une bonne part des requêtes vers la base de données qui auraient été nécessaires à sa construction.
Le cache de page est pris en charge par le Cache Plugin System de Joomla. Pour l'activer, rendez-vous dans l'administration de votre site Joomla et sélectionnez Extensions > Gestions des plugins. A partir du menu déroulant Sélectionnez un type choisissez le filtre system afin de trouver plus facilement ce plugin (alternativement cherchez "cache" dans le champ Filtre.)
Cliquez sur l'icône dans la colonne Activé pour activer le plugin.
Si vous éditez le plugin System-cache vous découvrirez qu'il a deux options : Utiliser le cache du navigateur et Durée de vie du cache.
Utiliser le cache du navigateur
L'infobulle pour ce paramètre précise : "Utiliser le cache de navigateur: si actif, utilise le mécanisme stockant des pages dans le navigateur."
Si vous choisissez cette option, Joomla enverra un En-tête "304 Not Modified" au navigateur si cette page a déjà été mise en cache. En d'autres termes Joomla indique au navigateur que cette page n'a pas changée depuis la dernière fois que vous l'avez vue, ce qui économise une requête au serveur pour obtenit le contenu de cette page dans le cas ou le navigateur ait enregistré une copie locale). Ce n'est vraiment utile que lorsque des internautes vont revisiter des pages déjà visitées pendant qu'ils parcourent votre site. Dans ce cas, cela peut améliorer le temps de chargement de la page. Si vos visiteurs généralement ne visite pas plus d'une page durant leur navigation sur votre site, cette option ne présente pas d'avantage notable.
Durée de vie du cache
Il s'agit du temps en minutes, de stockage de la page avant que ne soit faite une actualisation complète. Le choix de cette durée dépend de la fréquence de modification du contenu des pages. Si vous avez des actualités arrivant toutes les minutes, vous choisirez une petite durée, si nécessaire jusqu'à une minute.
Test de performance du cache de page
Les résultats suivant sont basés sur une installation local de Joomla 1.5.14 sur un portable (Macbook Pro 2.1.7 GHz Core Duo 2 avec 2GB de ram, PHP 5.2.6, MySQL 5.4.41). Les résultats ont été compilés en activant le plugin System-Debug (avec un peu de hacking pour montrer les résultats du cache en raison d'une bug dans le plugin)
SEF Off, Système cache plugin Off
Application afterLoad: 0.000 seconds, 0.24 MB
Application afterInitialise: 0.072 seconds, 3.72 MB
Application afterRoute: 0.114 seconds, 5.46 MB
Application afterDispatch: 0.165 seconds, 6.86 MB
Application afterRender: 0.667 seconds, 7.98 MB
SEF Off, Système cache plugin On
Application afterLoad: 0.000 seconds, 0.24 MB
Application afterInitialise: 0.077 seconds, 3.79 MB
Application afterCache: 0.080 seconds, 3.97 MB
Les améliorations sont notoires avec le cache activé pour afficher, le même contenu soit 8 fois plus rapidement et en utilisant moitié moins de mémoire.
Ce n'est effectivement pas un no-load-test (soit en d'autres termes des conditions idéales) de manière à démontrer que la meilleur performance que vous puissiez obtenir en activant le cache. Vous n'obtiendrez pas la même magnitude d'amélioration sur un serveur de production et probablement encore moins sur un serveur mutualisé mais les améliorations peuvent être quand même notables (si vos pages sont chargées de modules, vous pourriez voire une augmentation plus importante).
Choses à savoir en utilisant le cache de page
Il y a un certain nombre de choses que vous devriez surveiller lorsque vous utilisez le plugin cache de page, notamment :
- Il ne s'applique pas à l'administrateur.
- Il ne s'applique qu'aux visiteurs non-logués.
- Il ne s'applique pas aux formulaires (ce qui est une bonne chose).
- Il remplace le jeton de sécurité avec la valeur correcte (ce qui est une bonne chose).
- Il ajoute un "profiling mark" appelé afterCache (mais à cause d'une bug, vous ne le verrez pas).
- Cela fonctionne pour une URL unique quelque soit le composant, étant donné qu'il stocke une copie de la page après l'avoir affichée en fonction de son URL.
- Le comptage d'articles n'augmentera pas avec le cache on (rendant l'option de de tri par comptage inopérante)
- Le contenu dynamique basé sur javascript tel que Google Analytics ou Google Adsence fonctionne toujours.
- Le cache de page ne marche pas si Site > Configuration générale > système Débogage système est sur oui.
Le pages cachés sont stockées dans le répertoire /cache/page/. Si vous avez un gros site vous êtes invités à vérifier la capacité de stockage de votre hébergement.
Vider le cache de page
Vous avez besoin parfois de vider le cache de page afin que vous puissiez voire les changements récents faits sur votre site. Pour vider le cache de page rendez-vous dans le menu d'administration et sélectionnez Système > Purger cache. Cochez le Groupe Cache nommé "page" puis cliquez sur le bouton Supprimer en haut à gauche.
Caches de Vue et caching de module
Le cache de Vue et de module sont différents du cache de page parce qu'ils se contentent de copier des parties de page. Joomla analysera et "rendra" toujours le template, mais vous améliorerez les performances de votre site parce que des parties de page peuvent être affichées très rapidement.
Les caches de Vue et de module se contrôlent dans Outils > Nettoyez le cache Système. Cochez le Groupe Cache nommé "page" puis cliquez sur supprimer en haut à droite
Vous pouvez activer le cache et spécifier le temps de cache (en minutes) et le mode de gestion du cache (fichier est généralement choisit à moins que vous n'ayez des logiciels "exotiques" installés sur votre serveur).
Le cache de vue
Le cache de vue n'est supporté que par des composants qui le gère de part leur architecture MVC. Le seul composant qui le permette dans Joomla 1.5 est le composant des Articles mais seulement pour les visiteurs non loggés et seulement si vous ne visualisez pas une page présentée en Catégorie Blog (la raison pour laquelle cette vue ne marche pas m'échappe pour le moment). Plusieurs extensions JXtended supportent le cache de vue.
Le cache de vue capture une copie de la sortie du composant avant qu'il ne soit transmis au template pour être "rendu". Ceci peut être très utile si la quantité de travail pour générer la page demandée est importante en temps processeur (en clair, ce qui fait travailler durement le serveur).
Comme le cache de page, le cache de vue est lié à l'URL.
Le cache de module
Tous les modules devraient avoir une option de cache, en général les Paramètres avancés du module (devraient ) proposent une option de mise en cache (en minutes), pour garder une copie de la sortie du module. Cette option de cache vous permet de choisir entre Paramètres Globaux ou Pas de cache. Ce qui veut dire que vous avez trois combinaisons disponibles :
- La configuration globale du cache n'est pas activée : aucun des modules ne mettra sa sortie en cache.
- La configuration globale du cache est activée : tous les modules utilisant les Paramètres Globaux seront mis en cache..
- La configuration globale du cache est activée, mais les modules peuvent être individuellement non cachés en sélectionnant Pas de cache.
Il est important de noter que le cache de module est différent du cache réalisé par le plugin System Cache. En fait, ils sont complétement indépendants l'un de l'autre mis à part le fait que le le plugin System Cache à priorité sur le cache de module. En d'autres termes, lorsque le plugin System Cache met une page en cache, une copie de la page entière est stockée, y compris les modules . Quand la page est tirée du cache, il n'y pas de processus pour vérifier si certains certains modules sont réglés sur pas de cache.
Il y a quelques modules pour lesquels vous devriez choisir de ne pas activer le cache.
Le module de menu ne doit généralement pas être mis en cache à moins qu'il ne soit paramétré pour ne pas s'étendre (en d'autres mots, il reste tout le temps ouvert). Suivant leur paramétrages, le cache ne devrait pas être activé pour les modules de menu séparés (split menu modules). Si vous l'activez sur un menu dépliant ou un "split menu", il restera bloqué et ennuiera vos visiteurs.
Les modules de contenu rotatif, tels que le modules bannières, ne doivent pas non plus être cachés. Si ils le sont ils afficheront le même contenu jusqu'à ce que le cache expire! Mais il y a un exception, les modules de publicités basés sur du Javascript pour afficher leur contenu (tel que Google Adsence), ne sont pas affectés par le cache.
Le module de sondage ne doit pas être mis en cache, sinon vous risqueriez d'avoir un message d' "Invalid Token" quand quelqu'un votera.
Le modules de contenu très dynamique ne devraient pas être mis en cache ou avec une de durée de vie du cache très faible (une ou deux minutes)
Le cache de module marche que le visiteur soit un "guest" ou loggé.
Notes pour les Développeurs de Modules
Les développeurs de module doivent être conscients que le cache de module est géré par le moteur de rendu de module dans la class JDocumentRendererModule. Si les paramètres de cache ne sont pas fournis, le module ne pourra pas être caché même si c'est activé dans les paramètres de Configuration Générale. Pour permettre à un module d'être mis en cache, vous devez inclure le paramètre suivant dans le fichier XML du module :
<param
name="cache"
type="list"
default="1"
label="Caching"
description="Select whether to cache the content of this module">
<option
value="1">Use global</option>
<option
value="0">No caching</option>
</param>
Si vous avez aimé ce tutoriel d' Andrew Eddie, offrez lui un livre, à partir de sa présélection sur amazon.
Checklist SEO pour Joomla : le référencement Google avec Joomla