[SPIP Zone] Plugin de cache efficace

From : JLUC@... , the 7th February 2018 09:21

Ayant ajouté un log dans suivre_invalideur sur un de mes sites je constate que l'invalidation du cache est appelée plusieurs dizaines voir centaine de fois par jours sur un fonctionnement avec un nombre modéré d'interactions. Est ce que ça intéresse qqn de vérifier sur son site ? Si je comprend bien, ça veut dire que les durées de cache indiquées #CACHE{10000} ne sont pas souvent utilisées quand il y en a besoin car le cache est invalidé bien avant leur expiration. C'est bien cela ? En conséquence je me demande : qqn aurait-il conçu un plugin qui surcharge l'invalidation des caches SPIP ? L'ancien système de cache sélectionnait déjà les caches invalidés en utilisant le paramètre $cond="objet/id_objet" passé à suivre_invalideur (paramètres qui n'est plus utilisé désormais) Il n'est plus utilisé car sa gestion était pas efficace : les caches étaient en BDD et il fallait faire des requêtes. Pour ma part je me sers maintenant de memoization avec cache APC. Cela accélère grandement le parcours des caches et leur invalidation et leur destruction (sélective ou non). En reproduisant le fonctionnement de l'ancien cache mais avec memoization et donc en mémoire directement, pas en BDD, pensez vous que l'ancienne invalidation sélective redevient efficace ? Je me dis aussi qu'il est possible de cibler plus précisément encore les caches invalidés. Quand on crée un nouvel article (ou objet) on peut vouloir invalider les caches de - touts les caches consacrées à cet article spécifiquement (id_article dans le contexte) - tous les caches des squelettes dont le chemin contient la chaine 'liste' - éventuellement tous les caches dont le chemin contient un certain mot ('admin' pour un backend maison par exemple) Le cas échéant, si jamais le format standard de l'argument $cond="id='objet/id_objet'" était insuffisant pour paramétrer assez finement suivre_invalideur, ou pourrait aussi l'enrichir avec un format genre "id='objet/id_objet/regexp_nomducache'" ou "id='objet/id_objet' chemin='regexp_nomducache'" Par exemple "id='article/1234/(liste|admin|selection)'" ou "id='article/1234' chemin='(liste/|admin|selection/)'" JLuc