blog alpha design joomla

Le blog d' Alpha Design Joomla et autres ...

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 :

  1. La cache de page
  2. Le cache de vue
  3. 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.)

Joomla Cache - système cache plugin

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.

System cache options du plugin

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

Joomla caching view & modules

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 :

  1. La configuration globale du cache n'est pas activée : aucun des modules ne mettra sa sortie en cache. 
  2. La configuration globale du cache est activée : tous les modules utilisant les Paramètres Globaux seront mis en cache..
  3. 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

Performance de Joomla & Vitesse de chargement

Ils nous ont fait confiance

Universités & organismes de recherche

L' INSERM - unité U999, Université Paris Sud - Centre Chirurgical Marie Lannelongue

The Center for Groundwater Studies - Australie

L 'ENSAE : École Nationale de la statistique et de l'administration

La Maison des Sciences de l'Homme Paris Nord , UMS de l'université Paris 8, de l'université Paris 13 et du CNRS

L' Institut Supérieur de Développement - ISD Flaubert

Monpellier RIO imaging (MRI), plate - Forme Technologique (PFT), labellisée IBiSA.

CNRS - INEE  Le Laboratoire d'Excellence Dispositif de Recherche Interdisciplinaire sur les Interactions Hommes-Milieux (LabEx DRIIHM)

Organismes publics

Ministère de la défense : État Major de la 3ème Brigade Mécanisée

La mairie de la ville de Marly le Roi

La mairie de la ville de Breuillet

La mairie de la ville de Thuir

L' Agence Locale de l'Energie de la métropole marseillaise

L' Institut de Formation en Masso-kinésithérapie de Montpellier - Centre Hospitalier Universitaire de Bellevue

Le Centre de Gestion de la fonction Publique Territoriale des Alpes de Haute Provence

La Capitelle - couveuse d'entreprises du Gard

Le Centre Social Intercommunal de Saint Quentin de la Poterie

Le collège & lycée Saint Charles

Le lycée Philippe Lamour

Le centre François Baclesse: Centre de Lutte Contre le Cancer (CLCC)

L' Etablissement Régional de Formations des Professions Paramédicale du Groupement d'Intérêt Public des Etablissement de Santé d'Avignon et du pays de Vaucluse

Entreprises

Astrium une filiale EADS No 1 européen et No 3 mondial de l'industrie spatiale

Messer France

Photonlines

Shânti Gestion

App-Line

Vincent et Mireille

Axiom Information

Galerie Art City

Le Château de Boisson

LM Control

Vagabonde International

Photonlines Energy

la Pisciculture la Croisière

FHSolution

NaturEditions

Etudions à l'étranger

E.P.A.

Microeconomix

Alatak

Jade Black Design

Une bague une destinée

Schmulb

Espace revêtements

Partenaire de réussite

Stylitek

Fun-Kart

The Crew Coach

Sanitval

Ateliers d'écriture de Virginie Lou

cam4you

SDB+

Armelle Bongrain - architecte d'intérieur

ECIM

Riveria Expat Consultants

Florence Thorez - Diététicienne Nutritionniste

Le Séchoir

Le Moulin de Bouydou

L' Espace de Formation Clinique et Psychanalytique

Cours de musique à Montpellier

Leads Planet

Agerix

Etudions à l'étranger

Biopreserv

Aloes RED

InfoTour

EverNew

Synalabs

Bureau d'Etudes Arlaud

Stage de musique été

Fermetures Neuvillaises

Linguapolis

Weblligence

ASD Protect

Véronique Crépaux

Françoise Léon

Inovtolerie

BlueSafe

Viasocial

Repco Marine

King Jouet

Dr Abbas

ER3M

Cryo'net

Vectoring Talents

Desir d'écrire

Dr Girardin

Installation yperreault

Viaortho

Viadentiste

Alice Sweet Home

Cannes property services

La méthode Silva

Les outils du mieux être

Pinceaux et Camaïeux

Viacoach

ASH Conciergerie

MC Coaching Pro

Argos communication 

Cpsforma

Hervé Graille - Architecte 

Adrien Baguet - Architecte

Ingelic

Coach du bonheur

ONG / Associations

UNESCO: International Music Council

L' Association de Recherche en Soins Infirmiers

L' Union Internationale Contre la Tuberculose et les maladies respiratoires

Le Centre National des Risques Industriels

L' Institut International des Hautes Études en Psychanalyse

SurdiFrance : Association nationale de malentendants

La fondation Internationale de l'Hôpital Albert Scmhweitzer à Lambaréné

La Maison des Professions Libérales Ile de France

Le Conseil National de l' Enseignement Agricole Privé

La ligue Dauphiné Savoie de tennis

Le Conseil Permanent Régional des Associations d’Environnement

Le Syndicat des Podologues d'Île de France

La compagnie aux grands pieds

L' Espace de l'Ouest Lyonnais

Les Courants d'Airs

Nîmes Volley Ball

Le Club photo de Saint-Laurent-du-Var 

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies pour notamment réaliser des statistiques de visites