Difference between revisions of "Cache/fr"

From Joomla! Documentation

(Created page with ";Joomla! propose différentes options de "mise en cache". Voici un aperçu destiné aux administrateurs et développeurs du quoi, où et quand...")
 
(137 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
<noinclude><languages /></noinclude>
 
<noinclude><languages /></noinclude>
{{review}}
+
<br />
;Joomla! propose différentes options de "mise en cache". Voici un aperçu destiné aux administrateurs et développeurs du quoi, où et quand...
+
Joomla a différentes façons de mettre en cache des "choses". Voici un aperçu pour les administrateurs et les développeurs - quoi, où et quand.
  
=For Administrators=
+
=Pour les administrateurs=
A Joomla administrator can use these caches and options:
 
==Page Caching==
 
*'''Configuration''': Built-in Plugin (Extensions -> Plugin Manager -> System - Cache)
 
*'''Caches''': each whole page of your site
 
*'''Based on''': URL
 
*'''More info''':
 
**Optional browser caching: Also caches on your visitors' browser/computer
 
**Only caches pages for guest visitors (not for logged in visitors)
 
  
==View Caching==
+
En tant qu'administrateur, Joomla vous offre la possibilité de mettre en cache certaines parties de votre site. Vous pouvez choisir de mettre en cache des pages web entières ou seulement des parties de ces pages. Ce guide explique comment procéder.
*'''Configuration''': Global Config->Cache
 
*'''Caches''': each view of a component
 
*'''Based on''': URL, view, parameters, ...
 
*'''More info''': Component developers have to include this in their code to work. Mostly this is not done.  The Joomla main content component uses this, but only for guest visitors of your site though this is not obligated for every component.  
 
==Module Caching==
 
*'''Configuration''': Global Config->Cache
 
*'''Caches''': each module (individually customized via each module's Advanced Parameters)
 
*'''Based on''': ?
 
*'''More info''': You must disable it on some modules to avoid problems
 
==Further Caching==
 
If you want to check out other cache systems and possibilities, you might want to check out the third-party extensions around caching.
 
==Caching engines or storages==
 
*'''Configuration''': Global Config->Cache
 
Here you can choose which system you want your site to use for all caching.  Current options are: APC, Eaccelorator, File, Memcache, XCache.
 
  
APC, for example, also caches your php opcode.
+
Sur une page web d'un site Joomla, il y a 3 choses qui peuvent être mises en cache &nbsp;:
 +
# La page entière elle-même - le cache de la page
 +
# La sortie du composant Joomla pour cette page web - connu sous le nom de cache de vue
 +
# La sortie des modules affichés sur cette page - connue sous le nom de cache de module
 +
Vous avez plusieurs paramètres de cache qui vous permettent de contrôler ce qui est mis en cache&nbsp;:
 +
# Le plugin système "Système - Page Cache"
 +
# La configuration globale, l'onglet Système, les paramètres du cache. Ici, l'option Système Cache peut être réglée sur
 +
#* OFF - Mise en cache désactivée
 +
#* ON - Mise en cache conservatrice
 +
#* ON - Mise en cache progressive
 +
# De nombreux modules ont, dans leurs options, un onglet Avancé dans lequel la mise en cache peut être réglée sur ''Utiliser le réglage global'' ou ''Pas de mise en cache''
 +
Comme décrit ci-dessous, il existe également des règles de mise en cache qui sont mises en œuvre dans le code de Joomla et sur lesquelles vous n'avez aucun contrôle..
  
=For Developers=
+
Vous pouvez effacer le cache en sélectionnant le menu Administrateur → Système → Effacer le cache.
The class '''JCache''' allows a lot of different sorts and levels of caching.  The following sub-classes are made specifically, but you can add your own, or use the main one in many different ways.
+
En général, on peut considérer que Joomla dispose de 3 niveaux de cache, de plus en plus agressifs
 +
# Cache conservateur&nbsp;;
 +
# Cache progressif&nbsp;;
 +
# Cache de la page&nbsp;;
 +
Nous allons détailler les trois en détail plus bas.
  
Don't forget that the first level of cache encountered, will override any deeper cachingI suppose that too many levels is also counterproductive (''to be verified though'').
+
En outre, les développeurs de Joomla peuvent utiliser des fonctions de mise en cache pour stocker le résultat des requêtes de la base de données, par exemple, afin d'augmenter la réactivité du site, mais cela sort du cadre des capacités de l'administrateur.
*'''JCacheView''' caches and returns the output of a given view (in MVC). A cache id is automatically generated from the URI, specific view and its specific method, or you can give your own.
+
 
This can automatically be done via the base controller's display function. For example in the controller of your component:
+
== Mise en cache des pages ==
 +
Pour l'activer, allez dans Administrateur → Extensions → Plugins. Trouvez ensuite le plugin Système - Page Cache et activez-le. Cela signifie que les pages du site seront désormais mises en cache et qu'à chaque fois qu'elles seront demandées à nouveau, la page mise en cache sera servie, au lieu d'être générée par Joomla à partir des informations contenues dans la base de données. La page mise en cache continuera d'être servie jusqu'à ce qu'elle soit expirée - comme défini par le paramètre ''Temps de mise en cache'' dans l'Administrateur → Configuration globale → Onglet Système → Paramètres de mise en cache.
 +
 
 +
Si vous lisez cette page en tant que tutoriel et que vous souhaitez tester la mise en cache des pages, il est préférable de régler les paramètres de cache de la configuration globale sur :
 +
* Gestion du cache - Fichier
 +
* Chemin d'accès au dossier du cache - laisser vide
 +
* Durée du cache - 15 (la valeur par défaut est de 15 minutes)
 +
* Mise en cache spécifique à la plate-forme - Non
 +
* Cache système - OFF - Cache désactivé
 +
Pour vérifier que la mise en cache des pages fonctionne, allez sur une page du site web qui affiche un article. Après avoir affiché cette page, vous devriez trouver dans le système de fichiers un fichier <tt>cache/page</tt> dans lequel se trouve un fichier dont le nom ressemble à <tt><string of hex digits>-cache-page-<string of hex digits>.php</tt>. (Joomla doit stocker des pages de cache distinctes pour des URL distinctes. La deuxième chaîne de chiffres hexadécimaux est donc un hachage de l'URL de la page web du site, afin que le nom de fichier soit unique pour cette page.).
 +
 
 +
Utilisez ensuite la fonctionnalité de l'administrateur pour modifier le texte de cet article et réafficher la page web du site. Vous devriez trouver la version mise en cache, et non le texte que vous avez modifié.
 +
 
 +
La modification d'un article (ou d'un autre élément de Joomla) n'efface pas le cache de la ou des pages web où cet article est affiché.
 +
Pour effacer le cache des pages, allez dans Administrateur → Système → Effacer le cache. Cliquez sur la case à cocher située à côté du "Groupe de cache" appelé "page", puis appuyez sur le bouton Supprimer. Lorsque vous réaffichez votre page web, elle devrait maintenant afficher le texte modifié.
 +
 
 +
Si votre site dispose d'une fonction telle qu'un panier d'achat, l'application de la mise en cache des pages posera des problèmes, car les pages doivent afficher ce que le client a déjà sélectionné, plutôt que d'afficher une page mise en cache qui est commune à tous. Toutefois, vous pouvez configurer le plugin System - Page Cache pour exclure la mise en cache d'éléments de menu spécifiques ou d'URL et de plages d'URL spécifiques (dans l'onglet Avancé), de sorte que seules les pages réellement statiques soient mises en cache.
 +
 
 +
== Cache conservateur ==
 +
Avec la mise en cache conservatrice, vous pouvez mettre en cache la sortie de la vue des composants et la sortie des modules qui autorisent la mise en cache. Mais notez que cela ne fonctionnera que sur les pages qui ne sont pas mises en cache à l'aide du cache de page. Pour ces pages, la page web entière est mise en cache, et la mise en cache conservatrice n'est même pas prise en compte.
 +
 
 +
Pour activer la mise en cache conservateur&nbsp;:
 +
# Allez dans Administrateur → Système → Global Configuration → Onglet Système et dans Paramètres du cache, mettez Cache système sur ON - Mise en cache conservateur.
 +
# Allez dans Administrateur → Extensions → Modules et sélectionnez les modules que vous souhaitez mettre en cache. Si le module en question autorise la mise en cache, vous devriez pouvoir, sous l'onglet Avancé, régler la mise en cache sur
 +
* Paramètres Globaux - ce module sera mis en cache (puisque le paramètre global ayant été réglé sur Cache conservateur)&nbsp;
 +
* Pas de mise en cache - ce module ne sera pas mis en cache.
 +
(Notez que la durée de mise en cache dans la configuration globale est en minutes alors que la durée de cache dans les paramètres des modules est en secondes.) 
 +
 
 +
Pour vérifier que cela fonctionne, allez sur votre site public, '''assurez-vous que vous n'êtes pas connecté''', et naviguez sur une page web qui affiche un article. Vérifiez votre système de fichier et vous devriez trouver un répertoire <tt>cache/com_content</tt> contenant un fichier de cache.
 +
 
 +
Vous devriez également trouver d'autres répertoires tels que <tt>cache/com_languages</tt> (l'affichage d'une page implique effectivement le chargement de la langue courante, et ceci sera également mis en cache) et également des répertoires relatifs au cache des modules, ex: <tt>cache/com_modules</tt>. Ceci provient de l'utilisation du cache que les développeurs ont codé au sein de l'application Joomlaǃ.
 +
 
 +
Si vous éditez, modifiez et enregistrez cet article, puis rafraîchissez la page de cet article sur le site, vous verrez que le site affichera le texte mis à jour cette fois. Ceci se produit car, lors de l'enregistrement de la modification, Joomlaǃ efface le cache de cet article.
 +
 
 +
Cependant, vous pouvez vérifiez que le cache fonctionne en éditant le fichier de cache dans le répertoire <tt>cache/com_content</tt> avec un simple éditeur de texte. Avec l'éditeur, changez une lettre dans le texte de l'article du fichier cache et enregistrez le. En rafraîchissant la page de l'article sur le site, vous verrez la modification que vous avez faite dans le fichier de cache.
 +
 
 +
Comment sélectionnez les vues de composants qui vont être mises en cache et dans quelles circonstances&nbsp;? Malheureusement, ceci ne peut pas être fait. Ceci a été défini par les développeurs des composants du noyau de Joomlaǃ et écrit dans le code php du composant. Les critères sont différents pour chaque composant. Cependant, vous pouvez aisément savoir quels critères ont été utilisés car, pour chaque composant du site, ils sont codés dans le fichier du site <tt>controller.php</tt>. Par exemple, au moment ou j'écris (version Joomlaǃ 3.9.2), pour le composant contacts nous les trouvons dans <tt>components/com_contact/controller.php</tt>
 +
 
 +
<pre>
 +
if (JFactory::getApplication()->getUserState('com_contact.contact.data') === null)
 +
{
 +
$cachable = true;
 +
}
 +
</pre>
 +
 
 +
Ceci signifie que les vues associées aux contacts seront mises en cache à moins qu'il y ait une donnée de session saisie dans com_contact.contact.data – ce qui sera le cas si dans la session utilisateur, l'utilisateur a affiché un formulaire de contact (ex: dans une page pointée par un élément de menu de type Fiches de contact -> Contact simple).
 +
 
 +
Le fichier équivalent pour les articles <tt>components/com_content/controller.php</tt> contient&nbsp;:
 +
<pre>
 +
$cachable = true;
 +
if ($user->get('id') || ($this->input->getMethod() === 'POST' && (($vName === 'category' && $this->input->get('layout') !== 'blog') || $vName === 'archive' )))
 +
{
 +
$cachable = false;
 +
}
 +
</pre>
 +
 
 +
L'expression <tt>$user->get('id')</tt> est vraie si l'utilisateur est connecté, donc ceci signifie que les articles ne sont jamais mis en cache pour les utilisateurs connectés. Les expressions suivantes se rapportent à d'autres conditions où la mise en cache ne sera pas effectuée, même si l'utilisateur n'est pas connecté.
 +
 
 +
Ainsi, de cette manière, vous pouvez connaître les circonstances dans lesquelles la mise en case est effectuée, mais il n'est pas conseillé de modifier cela.
 +
Vous pouvez aussi savoir que les modules sont mis en cache en utilisant les modules du fil d’Ariane de Joomlaǃ, en s'assurant qu'ils sont affichés dans des positions de module sur la page du site et en paramétrant les options de mise en cache puis en éditant manuellement le fichier de cache cache/mod_breadcrumbs.
 +
 
 +
== Cache progressif ==
 +
Comme pour le cache conservateur, le cache progressif met également en cache l'affichage des vues composants et des modules. La différence fonctionnelle entre les deux est qu'avec le cache progressif, '''tous les modules sont toujours mis en cache pour les utilisateurs déconnectés'''. Dans le cas de ce paramétrage, la valeur "Pas de cache" pour les modules n'a pas d'effet. Si l'option de stockage de la mise en cache est "Fichier", alors vous pouvez trouver les fichiers de mise en cache des modules dans le répertoire <tt>cache/com_modules</tt> (la mise en cache de tous les modules se fait dans un seul fichier commun à tous).   
 +
 
 +
Pour activer le cache progressif, allez dans l'administration -> Système -> Configuration globale -> Onglet système et mettez le paramètre "Cache système" à "Cache progressif".
 +
 
 +
Concernant les conditions de mise en cache des vues des composants du noyau de Joomlaǃ '''il n'y a pas de différence entre le cache conservateur et progressif'''. Malgré ce que vous pouvez lire sur certains sites et les réponses aux questions sur le site Stack Overflow, il n'est pas vrai que le cache conservateur s'applique aux utilisateurs non connectés et le cache progressif aux utilisateurs connectés.
 +
 
 +
== Résumé ==
 +
Un résumé des types de mises en cache est donné ci-dessous.
 +
 
 +
===Cache de page===
 +
*'''Configuration'''&nbsp;: Plugin intégré (Administration -> Extensions -> Gestionnaire de plug-in -> Système - Cache de page)
 +
*'''Mise en cache'''&nbsp;: chaque page complète du site
 +
*'''Basé sur'''&nbsp;: URL
 +
*'''Information complémentaire'''&nbsp;:
 +
**Cache facultatif du navigateur&nbsp;: Met également en cache le navigateur/ordinateur du visiteur du site.
 +
**Met uniquement en cache les pages des invités (pas les pages des utilisateurs connectés). Attention à l'utilisation de ce plugin si vous avez un site interactif où vous souhaitez délivrer un contenu basé sur la session ou les cookies plutôt que sur l'URL seulement. Les fonctionnalités telles que le panier d'achat ne vont pas fonctionner.
 +
 
 +
===Cache de vue===
 +
*'''Configuration'''&nbsp;: Configuration globale->Cache
 +
*'''Mise en cache'''&nbsp;: chaque vue d'un composant
 +
*'''Basé sur'''&nbsp;: URL, vue, paramètres...
 +
*'''Plus d'infos'''&nbsp;: les développeurs de composants doivent l'inclure dans leur code pour qu'il fonctionne. La plupart du temps, ce n'est pas le cas. Le composant principal de contenu pour Joomla! l'utilise, mais uniquement pour les visiteurs de votre site car il n'est pas obligatoire pour chacun des composants.
 +
===Mise en cache de modules===
 +
*'''Configuration'''&nbsp;: Configuration globale->Cache
 +
*'''Mise en cache'''&nbsp;: chaque module (individuellement personnalisé via les paramètres avancés de modules)
 +
*'''Basé sur'''&nbsp;: l'id du module, les niveaux de vue de l'utilisateur et le paramètres itemid dans la requête HTTP
 +
*'''Plus d'infos'''&nbsp;: vous devez le désactiver sur certains modules afin d'éviter certains problèmes.
 +
 
 +
===Plus de cache===
 +
Si vous souhaitez voir d'autres systèmes et possibilités de cache, consultez les extensions tierces traitant de la mise en cache.
 +
 
 +
===Mise en cache des moteurs ou stockages===
 +
*'''Configuration''': Configuration->Cache
 +
Vous pouvez ici choisir le système que vous souhaitez utiliser pour la mise en cache de votre site. Voici quelques options : APC, Eaccelorator, File, Memcache, Redis, XCache.
 +
 
 +
APC, par exemple, met également en cache votre opcode PHP.
 +
 
 +
=Pour les développeurs=
 +
La classe '''JCache''' permet différentes sortes et niveaux de cache.  Les sous-classes suivantes ont été créées spécifiquement, mais vous pouvez ajouter la votre, ou utiliser la classe principale de différentes façons.
 +
 
 +
N'oubliez pas que le premier niveau de cache rencontré aura la priorité sur tout autre niveau de cache plus profond. Je suppose qu'un trop grand nombre de niveaux est également contre-productif (''à vérifier cependant'').
 +
*'''JCacheView''' met en cache et renvoie la sortie d'une vue donnée (en MVC). Un identifiant de cache est automatiquement généré à partir de l'URI, de la vue spécifique et de sa méthode spécifique, ou vous pouvez donner votre propre identifiant.
 +
Cela peut être réalisé automatiquement via la fonction d'affichage de base du contrôleur. Par exemple, dans le contrôleur de votre composant :
  
 
<source lang="php">class DeliciousController extends JController {
 
<source lang="php">class DeliciousController extends JController {
Line 44: Line 141:
 
}</source>
 
}</source>
  
There are also some urlparams to consider. Check this [http://joomla.stackexchange.com/questions/5781/how-can-i-use-joomlas-cache-with-my-components-view/7000#7000 "joomla stack"]
+
Il existe également des paramètres d'url (urlparams) à considérer. Consultez [http://joomla.stackexchange.com/questions/5781/how-can-i-use-joomlas-cache-with-my-components-view/7000#7000 "joomla stack"].
 +
 
 +
Egalement, soyez conscient que toute mise à jour (comme les hits ou visites) ne sera PAS mise à jour (sauf si vous ajoutez cela à l'extérieur de cette méthode et donc plus en profondeur dans la partie MVC.)
 +
*'''JCachePage''' met en cache et retourne le corps de la page.
 +
*'''JCacheCallback''' met en cache et retourne la sortie et les résultats des fonctions ou des méthodes.
 +
Si vous souhaitez mettre en cache des requêtes, c'est la classe pour le faire comme illustré ici : [[S:MyLanguage/Using_caching_to_speed_up_your_code|Utiliser la mise en cache pour accélérer votre code]].
 +
*'''JCacheOutput''' met en cache et retourne la sortie.
 +
Plutôt utilisé pour la mise en cache d'une partie spécifique du code php. Il agit comme un tampon de sortie, mais mis en cache.
  
Also, be aware that any updates (such as hits or visit counts) will NOT be updated (unless you add this outside this method and thus any deeper MVC-part.)
 
*'''JCachePage''' caches and returns the body of the page.
 
*'''JCacheCallback''' caches and returns the output and results of functions or methods.
 
If you want to cache queries, this is a good class for it, as illustrated here: [[S:MyLanguage/Using caching to speed up your code|Using caching to speed up your code]]
 
*'''JCacheOutput''' caches and returns output.
 
This is rather meant for caching a specific part of php code. It acts like an output buffer, but cached.
 
<headertabs/>
 
 
==Références==
 
==Références==
* [http://forum.joomla.org/viewtopic.php?f=428&t=326990&start=0 Better performance with joomla System Cache plugin (Joomla Forum)]
+
* [http://forum.joomla.org/viewtopic.php?f=428&t=326990&start=0 Meilleures performances avec le plugin joomla System Cache (Joomla! Forum)] (en anglais).
* [http://api.joomla.org/Joomla-Platform/Cache/JCache.html JCache]
+
* [https://api.joomla.org/cms-3/classes/JCache.html JCache]
* [http://joomla.stackexchange.com/questions/5781/how-can-i-use-joomlas-cache-with-my-components-view/7000#7000 How can I use Joomla's Cache with my components view? (joomla stackexchange beta)]
+
* [http://joomla.stackexchange.com/questions/5781/how-can-i-use-joomlas-cache-with-my-components-view/7000#7000 How can I use Joomla's Cache with my components view? (joomla stackexchange beta)] (en anglais).
  
 
<noinclude>
 
<noinclude>
[[Category:Landing Pages]]
+
[[Category:Landing Pages{{#translation:}}]]
[[Category:Extension development]]
+
[[Category:Extension development{{#translation:}}]]
[[Category:Global Configuration Management]]
+
[[Category:Global Configuration Management{{#translation:}}]]
[[Category:Framework]]
+
[[Category:Framework{{#translation:}}]]
 +
[[Category:Joomla! 3.x{{#translation:}}]]
 +
[[Category:Tutorials{{#translation:}}]]
 
</noinclude>
 
</noinclude>

Latest revision as of 03:31, 19 March 2023

Other languages:
Deutsch • ‎English • ‎Nederlands • ‎eesti • ‎español • ‎français • ‎italiano • ‎português • ‎русский • ‎فارسی • ‎हिन्दी • ‎中文(台灣)‎


Joomla a différentes façons de mettre en cache des "choses". Voici un aperçu pour les administrateurs et les développeurs - quoi, où et quand.

Pour les administrateurs

En tant qu'administrateur, Joomla vous offre la possibilité de mettre en cache certaines parties de votre site. Vous pouvez choisir de mettre en cache des pages web entières ou seulement des parties de ces pages. Ce guide explique comment procéder.

Sur une page web d'un site Joomla, il y a 3 choses qui peuvent être mises en cache  :

  1. La page entière elle-même - le cache de la page
  2. La sortie du composant Joomla pour cette page web - connu sous le nom de cache de vue
  3. La sortie des modules affichés sur cette page - connue sous le nom de cache de module

Vous avez plusieurs paramètres de cache qui vous permettent de contrôler ce qui est mis en cache :

  1. Le plugin système "Système - Page Cache"
  2. La configuration globale, l'onglet Système, les paramètres du cache. Ici, l'option Système Cache peut être réglée sur
    • OFF - Mise en cache désactivée
    • ON - Mise en cache conservatrice
    • ON - Mise en cache progressive
  3. De nombreux modules ont, dans leurs options, un onglet Avancé dans lequel la mise en cache peut être réglée sur Utiliser le réglage global ou Pas de mise en cache

Comme décrit ci-dessous, il existe également des règles de mise en cache qui sont mises en œuvre dans le code de Joomla et sur lesquelles vous n'avez aucun contrôle..

Vous pouvez effacer le cache en sélectionnant le menu Administrateur → Système → Effacer le cache. En général, on peut considérer que Joomla dispose de 3 niveaux de cache, de plus en plus agressifs

  1. Cache conservateur ;
  2. Cache progressif ;
  3. Cache de la page ;

Nous allons détailler les trois en détail plus bas.

En outre, les développeurs de Joomla peuvent utiliser des fonctions de mise en cache pour stocker le résultat des requêtes de la base de données, par exemple, afin d'augmenter la réactivité du site, mais cela sort du cadre des capacités de l'administrateur.

Mise en cache des pages

Pour l'activer, allez dans Administrateur → Extensions → Plugins. Trouvez ensuite le plugin Système - Page Cache et activez-le. Cela signifie que les pages du site seront désormais mises en cache et qu'à chaque fois qu'elles seront demandées à nouveau, la page mise en cache sera servie, au lieu d'être générée par Joomla à partir des informations contenues dans la base de données. La page mise en cache continuera d'être servie jusqu'à ce qu'elle soit expirée - comme défini par le paramètre Temps de mise en cache dans l'Administrateur → Configuration globale → Onglet Système → Paramètres de mise en cache.

Si vous lisez cette page en tant que tutoriel et que vous souhaitez tester la mise en cache des pages, il est préférable de régler les paramètres de cache de la configuration globale sur :

  • Gestion du cache - Fichier
  • Chemin d'accès au dossier du cache - laisser vide
  • Durée du cache - 15 (la valeur par défaut est de 15 minutes)
  • Mise en cache spécifique à la plate-forme - Non
  • Cache système - OFF - Cache désactivé

Pour vérifier que la mise en cache des pages fonctionne, allez sur une page du site web qui affiche un article. Après avoir affiché cette page, vous devriez trouver dans le système de fichiers un fichier cache/page dans lequel se trouve un fichier dont le nom ressemble à <string of hex digits>-cache-page-<string of hex digits>.php. (Joomla doit stocker des pages de cache distinctes pour des URL distinctes. La deuxième chaîne de chiffres hexadécimaux est donc un hachage de l'URL de la page web du site, afin que le nom de fichier soit unique pour cette page.).

Utilisez ensuite la fonctionnalité de l'administrateur pour modifier le texte de cet article et réafficher la page web du site. Vous devriez trouver la version mise en cache, et non le texte que vous avez modifié.

La modification d'un article (ou d'un autre élément de Joomla) n'efface pas le cache de la ou des pages web où cet article est affiché. Pour effacer le cache des pages, allez dans Administrateur → Système → Effacer le cache. Cliquez sur la case à cocher située à côté du "Groupe de cache" appelé "page", puis appuyez sur le bouton Supprimer. Lorsque vous réaffichez votre page web, elle devrait maintenant afficher le texte modifié.

Si votre site dispose d'une fonction telle qu'un panier d'achat, l'application de la mise en cache des pages posera des problèmes, car les pages doivent afficher ce que le client a déjà sélectionné, plutôt que d'afficher une page mise en cache qui est commune à tous. Toutefois, vous pouvez configurer le plugin System - Page Cache pour exclure la mise en cache d'éléments de menu spécifiques ou d'URL et de plages d'URL spécifiques (dans l'onglet Avancé), de sorte que seules les pages réellement statiques soient mises en cache.

Cache conservateur

Avec la mise en cache conservatrice, vous pouvez mettre en cache la sortie de la vue des composants et la sortie des modules qui autorisent la mise en cache. Mais notez que cela ne fonctionnera que sur les pages qui ne sont pas mises en cache à l'aide du cache de page. Pour ces pages, la page web entière est mise en cache, et la mise en cache conservatrice n'est même pas prise en compte.

Pour activer la mise en cache conservateur :

  1. Allez dans Administrateur → Système → Global Configuration → Onglet Système et dans Paramètres du cache, mettez Cache système sur ON - Mise en cache conservateur.
  2. Allez dans Administrateur → Extensions → Modules et sélectionnez les modules que vous souhaitez mettre en cache. Si le module en question autorise la mise en cache, vous devriez pouvoir, sous l'onglet Avancé, régler la mise en cache sur
  • Paramètres Globaux - ce module sera mis en cache (puisque le paramètre global ayant été réglé sur Cache conservateur) 
  • Pas de mise en cache - ce module ne sera pas mis en cache.

(Notez que la durée de mise en cache dans la configuration globale est en minutes alors que la durée de cache dans les paramètres des modules est en secondes.)

Pour vérifier que cela fonctionne, allez sur votre site public, assurez-vous que vous n'êtes pas connecté, et naviguez sur une page web qui affiche un article. Vérifiez votre système de fichier et vous devriez trouver un répertoire cache/com_content contenant un fichier de cache.

Vous devriez également trouver d'autres répertoires tels que cache/com_languages (l'affichage d'une page implique effectivement le chargement de la langue courante, et ceci sera également mis en cache) et également des répertoires relatifs au cache des modules, ex: cache/com_modules. Ceci provient de l'utilisation du cache que les développeurs ont codé au sein de l'application Joomlaǃ.

Si vous éditez, modifiez et enregistrez cet article, puis rafraîchissez la page de cet article sur le site, vous verrez que le site affichera le texte mis à jour cette fois. Ceci se produit car, lors de l'enregistrement de la modification, Joomlaǃ efface le cache de cet article.

Cependant, vous pouvez vérifiez que le cache fonctionne en éditant le fichier de cache dans le répertoire cache/com_content avec un simple éditeur de texte. Avec l'éditeur, changez une lettre dans le texte de l'article du fichier cache et enregistrez le. En rafraîchissant la page de l'article sur le site, vous verrez la modification que vous avez faite dans le fichier de cache.

Comment sélectionnez les vues de composants qui vont être mises en cache et dans quelles circonstances ? Malheureusement, ceci ne peut pas être fait. Ceci a été défini par les développeurs des composants du noyau de Joomlaǃ et écrit dans le code php du composant. Les critères sont différents pour chaque composant. Cependant, vous pouvez aisément savoir quels critères ont été utilisés car, pour chaque composant du site, ils sont codés dans le fichier du site controller.php. Par exemple, au moment ou j'écris (version Joomlaǃ 3.9.2), pour le composant contacts nous les trouvons dans components/com_contact/controller.php

if (JFactory::getApplication()->getUserState('com_contact.contact.data') === null)
{
	$cachable = true;
}

Ceci signifie que les vues associées aux contacts seront mises en cache à moins qu'il y ait une donnée de session saisie dans com_contact.contact.data – ce qui sera le cas si dans la session utilisateur, l'utilisateur a affiché un formulaire de contact (ex: dans une page pointée par un élément de menu de type Fiches de contact -> Contact simple).

Le fichier équivalent pour les articles components/com_content/controller.php contient :

$cachable = true;
if ($user->get('id') || ($this->input->getMethod() === 'POST' && (($vName === 'category' && $this->input->get('layout') !== 'blog') || $vName === 'archive' )))
{
	$cachable = false;
}

L'expression $user->get('id') est vraie si l'utilisateur est connecté, donc ceci signifie que les articles ne sont jamais mis en cache pour les utilisateurs connectés. Les expressions suivantes se rapportent à d'autres conditions où la mise en cache ne sera pas effectuée, même si l'utilisateur n'est pas connecté.

Ainsi, de cette manière, vous pouvez connaître les circonstances dans lesquelles la mise en case est effectuée, mais il n'est pas conseillé de modifier cela. Vous pouvez aussi savoir que les modules sont mis en cache en utilisant les modules du fil d’Ariane de Joomlaǃ, en s'assurant qu'ils sont affichés dans des positions de module sur la page du site et en paramétrant les options de mise en cache puis en éditant manuellement le fichier de cache cache/mod_breadcrumbs.

Cache progressif

Comme pour le cache conservateur, le cache progressif met également en cache l'affichage des vues composants et des modules. La différence fonctionnelle entre les deux est qu'avec le cache progressif, tous les modules sont toujours mis en cache pour les utilisateurs déconnectés. Dans le cas de ce paramétrage, la valeur "Pas de cache" pour les modules n'a pas d'effet. Si l'option de stockage de la mise en cache est "Fichier", alors vous pouvez trouver les fichiers de mise en cache des modules dans le répertoire cache/com_modules (la mise en cache de tous les modules se fait dans un seul fichier commun à tous).

Pour activer le cache progressif, allez dans l'administration -> Système -> Configuration globale -> Onglet système et mettez le paramètre "Cache système" à "Cache progressif".

Concernant les conditions de mise en cache des vues des composants du noyau de Joomlaǃ il n'y a pas de différence entre le cache conservateur et progressif. Malgré ce que vous pouvez lire sur certains sites et les réponses aux questions sur le site Stack Overflow, il n'est pas vrai que le cache conservateur s'applique aux utilisateurs non connectés et le cache progressif aux utilisateurs connectés.

Résumé

Un résumé des types de mises en cache est donné ci-dessous.

Cache de page

  • Configuration : Plugin intégré (Administration -> Extensions -> Gestionnaire de plug-in -> Système - Cache de page)
  • Mise en cache : chaque page complète du site
  • Basé sur : URL
  • Information complémentaire :
    • Cache facultatif du navigateur : Met également en cache le navigateur/ordinateur du visiteur du site.
    • Met uniquement en cache les pages des invités (pas les pages des utilisateurs connectés). Attention à l'utilisation de ce plugin si vous avez un site interactif où vous souhaitez délivrer un contenu basé sur la session ou les cookies plutôt que sur l'URL seulement. Les fonctionnalités telles que le panier d'achat ne vont pas fonctionner.

Cache de vue

  • Configuration : Configuration globale->Cache
  • Mise en cache : chaque vue d'un composant
  • Basé sur : URL, vue, paramètres...
  • Plus d'infos : les développeurs de composants doivent l'inclure dans leur code pour qu'il fonctionne. La plupart du temps, ce n'est pas le cas. Le composant principal de contenu pour Joomla! l'utilise, mais uniquement pour les visiteurs de votre site car il n'est pas obligatoire pour chacun des composants.

Mise en cache de modules

  • Configuration : Configuration globale->Cache
  • Mise en cache : chaque module (individuellement personnalisé via les paramètres avancés de modules)
  • Basé sur : l'id du module, les niveaux de vue de l'utilisateur et le paramètres itemid dans la requête HTTP
  • Plus d'infos : vous devez le désactiver sur certains modules afin d'éviter certains problèmes.

Plus de cache

Si vous souhaitez voir d'autres systèmes et possibilités de cache, consultez les extensions tierces traitant de la mise en cache.

Mise en cache des moteurs ou stockages

  • Configuration: Configuration->Cache

Vous pouvez ici choisir le système que vous souhaitez utiliser pour la mise en cache de votre site. Voici quelques options : APC, Eaccelorator, File, Memcache, Redis, XCache.

APC, par exemple, met également en cache votre opcode PHP.

Pour les développeurs

La classe JCache permet différentes sortes et niveaux de cache. Les sous-classes suivantes ont été créées spécifiquement, mais vous pouvez ajouter la votre, ou utiliser la classe principale de différentes façons.

N'oubliez pas que le premier niveau de cache rencontré aura la priorité sur tout autre niveau de cache plus profond. Je suppose qu'un trop grand nombre de niveaux est également contre-productif (à vérifier cependant).

  • JCacheView met en cache et renvoie la sortie d'une vue donnée (en MVC). Un identifiant de cache est automatiquement généré à partir de l'URI, de la vue spécifique et de sa méthode spécifique, ou vous pouvez donner votre propre identifiant.

Cela peut être réalisé automatiquement via la fonction d'affichage de base du contrôleur. Par exemple, dans le contrôleur de votre composant :

class DeliciousController extends JController {
	function display() {
		parent::display(true); //true asks for caching.
	}
}

Il existe également des paramètres d'url (urlparams) à considérer. Consultez "joomla stack".

Egalement, soyez conscient que toute mise à jour (comme les hits ou visites) ne sera PAS mise à jour (sauf si vous ajoutez cela à l'extérieur de cette méthode et donc plus en profondeur dans la partie MVC.)

  • JCachePage met en cache et retourne le corps de la page.
  • JCacheCallback met en cache et retourne la sortie et les résultats des fonctions ou des méthodes.

Si vous souhaitez mettre en cache des requêtes, c'est la classe pour le faire comme illustré ici : Utiliser la mise en cache pour accélérer votre code.

  • JCacheOutput met en cache et retourne la sortie.

Plutôt utilisé pour la mise en cache d'une partie spécifique du code php. Il agit comme un tampon de sortie, mais mis en cache.

Références