Plugin mémoization

La mémoïzation est « une technique consistant à réduire le temps d’exécution d’une fonction en mémorisant ses résultats d’une fois sur l’autre » [1]. C’est aussi le nom d’un plugin SPIP qui a recours aux caches memcache(d), APC, xcache, eaccelerator ou redis, pour accélérer les accés aux caches SPIP. Il propose aussi une option de base, filecache, pour les hébergements sans cache mémoire.

La librairie utilisée pour ce plugin peut également être utilisée de manière autonome sur mesure dans le code d’un plugin, ou même par toute application indépendante de SPIP. Pour cela, voyez l’article « Memoization, la librairie ».

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 :
-  XCache
-  APC 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.

XCache
-  doc technique pour la configuration : http://xcache.lighttpd.net/wiki/PhpIni
-  XCache n’est pas compatible PHP7 (et ne le sera peut être jamais)

APC
-  APC Cache
-  il n’y a aucun paramétrage supplémentaire à faire.
-  Lorsque vous activez l’option APC Cache, vous pouvez aussi bénéficier d’un navigateur-analyseur de cache en installant le plugin XRay en complément.

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.

Notes

[1d’après Wikipedia

Dernière modification de cette page le 9 février 2019

Discussion

2 discussions

  • 4

    Attention !
    Plantage du site laccreteil.fr lors de la mise à jour en v2.0.2, avec message impossible à vous copier ici car il n’est pas permis d’insérer des images ni d’utiliser les attributs html class ou style
    Bonne journée.
    Michel

    • Quel est le message d’erreur ?
      Vous pouvez le recopier en vous servant des touches de votre clavier.
      Ou si vous voulez absolument donner une image, indiquez un lien vers www.framapic.org

    • Ah il est indiqué sur spip-user :

      Fatal error: Uncaught Error: Call to a member function object() on null in /home/laccrete/www/plugins/auto/memoization/v2.0.2/memo/redis.inc:46 Stack trace: 
      #0 /home/laccrete/www/plugins/auto/memoization/v2.0.2/memoization_options.php(70): MCacheBackend_redis->get('b215325430f245d...') 
      #1 /home/laccrete/www/plugins/auto/memoization/v2.0.2/public/cacher.php(304): MCache->get('b215325430f245d...') #2 /home/laccrete/www/ecrire/public/assembler.php(46): public_cacher(Array, NULL, 'b215325430f245d...', Array, 0) 
      #3 /home/laccrete/www/ecrire/public.php(117): assembler('', NULL) 
      #4 /home/laccrete/www/spip.php(26): include('/home/laccrete/...') 
      #5 /home/laccrete/www/index.php(3): include('/home/laccrete/...') 
      #6 {main} thrown in /home/laccrete/www/plugins/auto/memoization/v2.0.2/memo/redis.inc on line 46
    • Voilà c’est corrigé dans la version 2.0.3

    • Merci !
      Attention, il faut attendre 2.0.3 car en auto, la version est encore 2.0.2 à cette heure !
      Bonne journée

    Répondre à ce message

  • 1

    Bonjour,
    Sur notre espace d’hébergement seuls autodetect/filecache ou nocache sont disponibles. Cela veut dire que l’hébergement ne propose pas de cache en mémoire et si je me fie à la doc, les performances sont un peu pénalisées.
    Que faut-il faire (modules à installer ? autre chose) pour rendre dsiponible memcache, APC et les autres ? Quelque chose à demander à l’hébergeur ?

    • Ce site est un site d’entraide autour de SPIP et cette doc porte sur le plugin memoization. L’installation des systèmes de caches mémoire cités ici n’entre pas dans ce cadre et pour ma part je suis incapable de vous répondre.
      Vous trouverez les indications utiles derrière les liens déjà fourni dans cette page. Ou sinon demandez à votre hébergeur ou à votre admin sys.

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom