Plugin staticCache 0.8.4 pour Dotclear

Ce plugin que je maintiens depuis quelque temps, a été publié en version 0.8.4 hier sur DotAddict. Étant donné qu’il ne possède aucun lien de support spécifique, hormis le forum de Dotclear, je pense qu’il est utile d’ouvrir un billet ici pour servir de support.

Je précise que l’auteur original de ce plugin est Olivier Meunier et que je n’ai fait qu’adapter et enrober son code pour permettre quelques réglages supplémentaires et plus fins. C’est la raison pour laquelle vous trouverez la mention « Olivier Meunier and contributors » dans le fichier _define.php.

Présentation

Ce plugin, comme son nom l’indique, permet de gérer un cache statique, c’est à dire uniquement composé de pages HTML/CSS/Js (ou XML pour les flux RSS/Atom). La dynamique des pages étant toutefois conservée pour permettre :

  • L’usage des billets protégés par mot de passe ;
  • la saisie et envoi de formulaires (commentaires, page de contact, …) ;
  • la publication des billets programmés.

Concrètement cela signifie que les pages renvoyées par le serveur sont construites comme à l’accoutumée si elles n’existent pas dans le cache statique, ou si elles ont été rendues caduques par une modification apportées postérieurement à leur mise en cache — par exemple lorsqu’un nouveau commentaire est posté ou qu’un billet à été publié —, puis stockées dans le cache statique.

À l’appel suivant de la même page, si celle-ci existe et est valide dans le cache elle sera alors servie directement par le serveur plutôt que d’être reconstruite à partir du cache des templates.

Configuration

Le plugin se configure exclusivement en modifiant le fichier config.php de votre installation.

Activation

Pour activer ce plugin il faut insérer cette ligne :

define('DC_SC_CACHE_ENABLE',true);

Pour le désactiver, remplacez true par false, ou commentez la ligne en la faisant précéder d’un //, ou encore supprimez-la :

//define('DC_SC_CACHE_ENABLE',true);

ou

define('DC_SC_CACHE_ENABLE',false);

Définition du répertoire de cache

Par défaut le plugin utilisera un répertoire nommé dcstaticcache créé pour l’occasion dans le répertoire de cache de Dotclear (spécifié par la constante DC_TPL_CACHE).

Vous pouvez modifier celui-ci à l’aide de la déclaration suivante, toujours dans le fichier config.php :

define('DC_SC_CACHE_DIR',DC_TPL_CACHE.'/sc');

Cela revient à utiliser un dossier nommé sc plutôt que dcstaticcache dans le répertoire de cache. Vous pourriez tout aussi bien placer ce répertoire dans le dossier /tmp de votre serveur, ou ailleurs.

Plateforme multiblogs

Il peut arriver sur certaines plateformes multiblogs que vous ayez besoin de ne pas mettre en cache un ou plusieurs des blogs qui y tournent ou au contraire de ne mettre en cache que quelques uns de ceux-ci.

Parmi les blogs que je ne conseillerais pas de cacher vous trouverez :

  • Les blogs utilisant un plugin Planet et nécessitant un accès dynamique à la page d’accueil pour récupérer les différentes sources qui les composent ;
  • les blogs dont l’accès est protégé par un mot de passe (à l’aide du plugin Private par exemple).

Le plugin staticCache permet de définir une liste de blogs à mettre en cache ainsi qu’une liste de blogs à ne pas mettre en cache, cette dernière liste étant prioritaire sur la première.

Pour définir une liste de blogs à mettre en cache, à l’exclusion de tout autre, il faut insérer cette ligne :

define('DC_SC_CACHE_BLOGS_ON','blogA,blogB');

Avec la liste des blogs représentés par leurs identifiants et séparés par des virgules.

Pour définir une liste de blogs à ne pas mettre en cache, tous les autres le seront alors, insérez cette ligne :

define('DC_SC_CACHE_BLOGS_OFF','blogC');

Toujours avec la liste des blogs représentés par leurs identifiants et séparés par des virgules.

Comme je le disais précédemment, si un blog se retrouvait dans les deux listes, alors il ne serait pas mis en cache.

Contextes spéciaux

Activer le cache statique peut poser problème avec certains plugins nécessitant un traitement dynamique. Je pense entre autre aux plugins permettant de gérer une communauté ou un forum dans une partie du blog.

Le plugin staticCache permet de définir une liste de types d’URL (au sens des URL Handlers de Dotclear) à ne pas cacher.

Par défaut cette liste est limitée à preview et pagespreview qui sont les contextes de prévisualisation des billets et des pages lors de leurs éditions côté administration.

Pour ajouter d’autres types d’URL à ne pas mettre en cache, il faut insérer la ligne suivante :

define('DC_SC_EXCLUDED_URL','sysinfo');

Exemple avec un type d’URL ajouté par le plugin sysInfo et utilisé pour lister les behaviours publics.

Chaque type devant être séparé du précédant par une virgule.

Notez que ce réglage sera appliqué à tous les blogs mis en cache sans exception.

Réglage agressif

Il est possible de régler le plugin staticCache de manière qu’il intervienne avant toute connexion à la base de données. Cela permet d’éviter de solliciter le serveur MySQL ou PostgreSQL si la page demandée est déjà présente dans le cache.

Notez que faire ce réglage rendra impossible la mise en ligne des billets programmés, ce qui peut être gênant pour certains usages.

Pour activer ce mode agressif, il faut insérer, après toutes les autres lignes concernant ce plugin, la ligne suivante :

require dirname(__FILE__).'/plugins/staticCache/_post_config.php';

Il vous faudra peut-être adapter le chemin en fonction de l’endroit où est effectivement installé le plugin staticCache.

Exemple de configuration complète

/ Static cache
define('DC_SC_CACHE_ENABLE',true);
define('DC_SC_CACHE_DIR',DC_TPL_CACHE.'/sc');
define('DC_SC_CACHE_BLOGS_ON','');
define('DC_SC_CACHE_BLOGS_OFF','');
define('DC_SC_EXCLUDED_URL','sysinfo');

// Cache check before db connection
require dirname(__FILE__).'/../plugins/staticCache/_post_config.php';

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/10158

Haut de page