Caches de SPIP

  qui cachent le travail -long- du serveur

SPIP intègre d’origine un système de "cache" du serveur : ce cache de pages calculées permet un fonctionnement plus économe des ressources serveur, et même un fonctionnement en mode dégradé en cas de perte ou saturation de la BDD.

En revanche, en mode développement de site, il faut parfois intervenir sur ce stockage de fichiers, de façon plus directe... ce qui mérite quelques investigations expliquées ci-après.

Article publié le 24 juillet 2016, et actualisé en janvier 2019

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Attention, cette page est encore en  

tmp cachesRappelons juste que les fichiers "cachés" correspondent aux étapes de compilation de squelette pour préparer les pages à servir aux visiteurs [1] par le serveur Web.

Ces fichiers "cachés" sont des morceaux de texte, en source PHP pour la pré-compilation des squelettes d’origine, ou HTML/CSS pour les pages finales, nommés aléatoirement pour éviter tout conflits de noms....

Quand on parle -ici- de fichiers cachés, rien de mystérieux : ce ne sont pas des fichiers systèmes (avec les attributs .hs sous Windows ou en Linux préfixés d’un . comme le .htaccess, mais juste des fichiers intermédiaires de travail, enregistrés par SPIP dans divers répertoires.... de cache !

Mais parfois -surtout pour le Webmestre- ces fichiers de cache nous cachent la prise en compte des modifications apportées sur les squelettes : il faut vider le cache serveur SPIP, voire le désactiver : voir ci-dessous.

 Les répertoires de cache de SPIP 3.1

Les divers fichiers intermédiaires de cache (des morceaux de squelettes partiellement "evalués") se répartissent dans deux branches de l’arborescence SPIP :
- ./tmp/cache/. pour le cache principal de SPIP (squelettes compilés et pages calculées)
(plus en détail, les pages finales sont réparties dans les 16 répertoires identifiés par un caractère hexadécimal ci-contre,
et les autres répertoires sont dédiés à la compilation initiale des squelettes
).

local caches


- ./local/cache-../. pour des usages plus spécifiques :
les noms de ces sous-dossiers sont explicites (voir https://programmer.spip.net/reperto...).
Ces répertoires sont regénérés dans le fonctionnement normal de SPIP : vous pouvez donc supprimer tout leur contenu à tout moment...

Ces caches -de durée réglable : par la balise #CACHE ou la constante _DUREE_CACHE_DEFAUT, paramètre en secondes- vont donc faciliter la fluidité de navigation pour les visiteurs du site, car le serveur n’a normalement pas à recalculer la compilation de squelette.

 Vidage et recalcul du cache

Pour le webmestre développeur, cet avantage se transforme en inconvénient : à chaque modification d’un squelette (squelette de page en HTML, texte de contenu, image ou CSS), il faut forcer le serveur à tout reprendre : c’est le recalcul des squelettes : toutefois deux modifications améliorent l’usage : le bouton de désactivation temporaire du cache, et l’appel automatisé de l’invalidation de page.

Comme les "devs" de la "Team" sont aussi les premiers utilisateurs de SPIP, ils ont pensé à se faciliter un peu la tâche [2] !
Spip propose donc de multiples solutions -pas toutes équivalentes- pour forcer le recalcul d’une page (sous réserve d’utiliser le cookie de correspondance) :
- ajouter un paramètre supplémentaire à l’URL : Syntaxes d’appel de pages en saisie ou clic
(les boutons d’Admin proposent le bouton nommé Recalculer la Page )

bouton recalculer (avec le cookie de correspondance)

D’autres solutions sont accessibles dans l’espace privé :
- exiger de SPIP un nettoyage immédiat : #vider_cache
- demander à SPIP de vous laisser travailler en direct ([désactiver le cache])
- forcer un travail sans filet (sans cache) : par une macro ou le CS...
- sans oublier l’intervention directe par ftp

 Maintenance du Cache

Vous comprenez mieux les indications de cet écran (dans l’onglet Maintenance).

L’ecran de maintenance SPIP 3 admin_vider

N.B. : pour les administrateurs : simplification de SPIP :
SPIP effectue désormais automatiquement le recalcul de chaque page modifiée grâce à l’opération d’invalidation du cache de page en appelant les instructions :

  1. // Invalider les caches
  2.         include_spip('inc/invalideur');
  3.         suivre_invalideur("id='$objet/$id'");

Télécharger

Les développeurs utiliseront directement cette syntaxe dans la fonction de traitement des art58( de tout nouvel objet éditorial...


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1Depuis SPIP 3, le meme principe d’applique aux pages de l’espace privé, squelettisées en Z !

[2Même s’ils vous semblent plus doués pour inventer des structures et syntaxes compliquées ;-) !


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 24 juillet 2016, et actualisé en janvier 2019 Provisoire (à compléter...) .

Répondre à cet article