Mettre les caches en mémoire
Memoization est particulièrement utile lorsque votre hébergement propose un système de cache mémoire ’user’. À chacun des systèmes de cache mémoire les plus répandu correspond une option de memoization :
- APC Cache
ou APCu Cache
- redis
- memcache(d)
Lorsque votre site dispose de l’un de ces systèmes de caches, le paramétrage de memoization
vous en propose le choix. Il suffit de choisir l’option, et votre SPIP bénéficie d’un cache mémoire au lieu d’un cache sous la forme de fichiers sur le disque. L’accès aux caches est donc grandement accéléré.
Lorsqu’activé sur un SPIP, le plugin memoization
ne touche pas au fonctionnement habituel du cache de SPIP, sur la durée de mise en cache d’une page ou noisette. Cela ne fait que transférer le stockage du mécanisme de cache de SPIP dans la RAM.
Il y a une autre différence par rapport au cache SPIP classique : avec memoization
il n’y en a tout simplement pas de garbage collector car c’est chaque système de cache qui gère son propre nettoyage des données périmées. Cela permet d’éviter un bug récurrent sur les gros sites SPIP : l’« explosion » du cache.
APC ou APCu
- Doc APC Cache (obsolète)
- Doc APCu Cache
- il n’y a aucun paramétrage supplémentaire à faire.
- Lorsque vous activez l’option APC Cache
ou APCu Cache
, vous pouvez aussi bénéficier d’un navigateur-analyseur de cache en installant le plugin XRay en complément, ainsi que de fonctionnalités avancées de gestion du cache avec CacheLab.
redis
- https://redis.io/clients
- Pour ce système de cache, le paramétrage SPIP du plugin propose deux modes pour interroger la base : « Serveur » et « Socket Unix ». Ce choix dépends de la configuration du serveur redis choisi par l’admin sys.
- Pour la sérialisation : privilégier SERIALIZER_IGBINARY
, qui est plus performant
memcache(d)
- memcached est une évolution plus récente de memcache.
- Liens :
Autres options de cache
filecache
L’option filecache
est la seule option qui ne range pas les caches en mémoire. On l’utilisera lorsque l’hébergement ne propose pas de cache en mémoire.
Avec filecache
, memoization
range les caches sous la forme de fichiers, comme le SPIP de base, mais distribue ces fichiers dans un plus grand nombre de dossiers que par défaut avec SPIP. Il n’y a pas de réglage limite pour le filecache
; par défaut, mémoization prévoit une distribution homogène des caches parmi 16^4 fichiers. La plupart du temps ce sera satisfaisant, mais en cas de collision, il est possible de modifier cette valeur et régler ainsi la taille maxi (il faudra faire quelques essais).
Note : l’option filecache
est intégrée dans SPIP à partir de la version 3.1.
nocache
Avec nocache
, SPIP ne gère plus de cache. C’est à utiliser temporairement seulement, le temps d’un débug par exemple.
Constante _MEMOIZATION_DELESTER_LOAD_SEUIL
Cette constante PHP règle le seuil de charge du serveur à partir de laquelle memoïzation va servir une version déjà en cache, même si elle est périmée. Ainsi, au delà de ce seuil, les calculs demandés sont moins fréquents.
- La charge est connue par la fonction PHP sys_getloadavg
- La valeur par défaut de cette constante est actuellement de 20.
Sur certains hébergements, la valeur renvoyée par sys_getloadavg
n’est pas significative. On pourra dans ce cas annuler ce délestage en modifiant la valeur de la constante dans le fichier d’options du site. Par exemple :
define ('_MEMOIZATION_DELESTER_LOAD_SEUIL', 100000);
Notes sur la configuration
Réinitialisation : Si vous déplacez un site, avec copie intégrale de la base de données, et que le serveur d’accueil n’a pas les mêmes options disponibles (par exemple redis
sur l’ancien, mais pas sur le nouveau), il faut vider la colonne valeur du champs memoization
de la table spip_meta
, puis activer le plugin memoization et le configurer.
XCache était jadis utilisable, mais n’est pas compatible PHP7 et a été retiré du plugin à partir de sa version 3.1.0.
Discussions par date d’activité
2 discussions
Bonjour j’ai un spip en Version 4.2.6
Les options APC, APCU, memcached et redis sont en grisé, j’en conclue que les mécanisme de mise en mémoire ne sont pas disponible sur ce serveur.
Y a t’il un intérêt à activer quand même ce plugin ?
J’ai réussi à activer redis, mais je ne comprends pas quels paramètre appliquer pour que ça marche. J’imagine bien que ça sort du cadre du plugin, mais je veux bien de l’aide. Comment répondre aux questions :
Serveur ou socket Unix ?
J’ai mis le chemin /domains/domaine.ext/public_html/tmp/redis.sock
Mot de passe : celui de la base ou celui du compte sur le serveur ?
Base de données : normalement je mets juste le nom de la base
Merci si vous avez l’usage de de Redis sous CentOS 8
Répondre à ce message
Si vous déplacez des sites, avec copie intégrale de la base de données, et que le serveur d’accueil n’a pas les options disponibles (par exemple j’avais redis sur l’ancien, mais pas sur le nouveau), il suffit de :
Vider le colonne valeur du champs memoization de la table spip_meta
Et ensuite, vous pourrez activer le plugin memoization et le configurer.
Merci. J’ai intégré cette précision en note à la fin de la doc.
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |