Ne plus utiliser page.config.no_cache = 1 ; préférer TCEMAIN.clearCacheCmd = all

Pour améliorer les performances de l'affichage d'une page web sont mis en place différentes séries de cache. Il en existe deux principaux : le cache navigateur et le cache du CMS (ici TYPO3).

Le cache navigateur

Lors du chargement d'une page HTML, le navigateur va lire le code et télécharger tous les éléments compris dans la page. Le temps d'affichage dépendra du temps de chargement de tous les éléments : images, feuilles de style CSS, javascripts… Vous êtes en train de lire des fichiers qui se trouvent sur un serveur distant avec une bande passante assez faible. Le cache navigateur permet de sauvegarder la page et ses éléments sur votre disque dur ; ainsi au deuxième affichage d'une page, les éléments ne sont plus lus sur un serveur distant mais sur votre propre disque dur, sans souci de bande passante. Oui, c'est plus rapide, mais ça mange un peu d'espace disque ; au prix actuel de l'octet, c'est pas vraiment gênant.

Dans le milieu du web, lors de la conception d'une page ou lors d'une modification, nous sommes amenés à modifier des images, des feuilles de styles et même du javascript. Mais alors si ces éléments sont lus sur le disque, leur modification sur le serveur distant ne seront jamais visibles. A cela, je réponds le phrase préférée du développeur : "vide ton cache".
Dans le langage du développeur web "vide ton cache navigateur" consiste à appuyer simultanément sur les touches "ctrl+F5" ou encore "ctrl+R" (ça marche sur tous les navigateurs et c'est à faire absolument avant d'appeler son développeur préféré). Le navigateur va effacer les éléments conservés sur le disque dur et les remplacer par les nouveaux.

Le cache TYPO3

Quand vous visitez un site créé à partir du CMS TYPO3 (c'est un exemple) ; les pages sont dynamiques, générées en fonction de différents paramètres : le contenu, l'ouverture du menu, les extensions présentes, activation de session… Si beaucoup d'éléments de contenu sont présents sur la page, la génération de la page peut être très longue (fonction du nombre de requête en base de données) ; encore plus longue si beaucoup d'utilisateurs essayent d'y accéder en même temps. TYPO3 possède donc son propre système de cache pour sauvegarder les pages, mais cette fois-ci du côté serveur.
Il les sauvegarde au format HTML.

Dans le milieu du web (je pense que vous avez devinez que c'était mon métier), avoir des pages cachées en HTML par le CMS, c'est bien pour un site en production, mais c'est pas pratique parce que ça empêche de voir les modifications durant le développement. Alors lorsque quelqu'un s'échine sur sa page en appuyant sur "ctrl+F5" à plusieurs reprises en disant tout haut "je ne comprends pas ça devrait marcher", je lui réponds "vide ton cache… TYPO3"

no_cache vs TCEMAIN.clearCacheCmd

Donc le métier du développeur sur TYPO3 consiste à appuyer des centaines de fois par jour sur "ctrl+F5" et à aller dans TYPO3 et vider les caches à l'aide de la souris. Comme ça use énormément les articulations, les concepteurs de TYPO3 ont pensé à une variable à configurer et qui est : page.config.no_cache = 1. Cette configuration marche plus ou moins, ça n'empêche pas d'aller vider son cache de assez souvent pour effacer les caches des gabarits HTML. Elle reste pratique en période de développement, mais il ne faut surtout pas oublier de la passer à zéro (page.config.no_cache = 0) une fois en production sinon les pages ne seront pas cachées (et le moteur de recherche ne marchera pas).

Ron Hall from Dallas, Texas, vous propose de ne plus utiliser no_cache et de privilégier TCEMAIN.clearCacheCmd.
TCEMAIN.clearCacheCmd, elle dit pas, tu me caches ou tu me caches pas la page ; elle dit, tu m'effaces le cache sur les id de page que je te donne chaque fois qu'un élément est édité .

D'habitude, on utilise cette ligne de code avec différents id de pages : pour une page d'actualités en LIST (45), une en LATEST (53) et une autre en SINGLE (60). Grâce à l'appel de cette ligne TCEMAIN.clearCacheCmd = 45,53,60 dans le TS config du répertoire de stockage des actualités, les caches des pages 45,53,60 sont effacés à chaque modification d'un élément de contenu.

Ron utilise lui ce qu'on peut appeler la méthode américaine. Il crée un répertoire de stockage général qu'il appelle "site ressources" ; comme la fonction est récursive, à l'intérieur il place tous les répertoires de stockage (sous répertoires de "site ressources" donc) du site : TemplaVoilà, TypoScript, actualités… Dans le TS config du répertoire "site ressources", il indique la ligne TCEMAIN.clearCacheCmd = all : à chaque modification d'un élément de contenu lié à une extension, TYPO3 efface le cache de toutes les pages.

Dans son message Don't Wear Out the Clear Cache Button, Ron Hall nous annonce une réduction de l'effacement du cache de 95%. Lisez bien les commentaires de ce message, on y annonce que no_cache va devenir obsolète et que, bien entendu, la configuration "all" n'est pas à laisser sur un site en production.