• Je viens de poster un nouveau #plugin #SPIP sur #spip-zone : Microcache
    http://zone.spip.org/trac/spip-zone/browser/_plugins_/plugins_seenthis/microcache

    – à la base, c’est la fonction de @fil pour http://rezo.net,
    – mais comme le nom du #microcache est facilement accessible, elle est complétée par une fonction de suppression du cache.

    Sur Seenthis, c’est le système qui me permet de travailler avec des squelettes SPIP, tout en ayant à la fois :
    – un système de cache statique et persistant,
    – des mises à jour en temps réel (il me suffit d’effacer les fichiers microcache qui vont bien quand on poste un message).

    Ah oui, ça s’utilise ainsi :

    [(#ID_AUTEUR|microcache{inc/truc_auteur})]

    où inc/truc_auteur.html est un squelette tout à fait classique. La valeur de l’#ID_AUTEUR est à récupérer, dans ce squelette, avec la variable #ENV{id}.

    Pour effacer ce microcache, a priori ça se fait directement dans du PHP (à la validation d’un formulaire, certainement) :

    effacer_microcache($id_auteur, « inc/truc_auteur ») ;

    • à bien y réfléchir il serait très aisé d’ajouter l’option suivante dans ce plugin : remplacer l’inclusion par un <esi : url de l’inclusion>
      #varnish

    • Si tu regardes le fichier /inc, tu verras qu’il y a déjà une fonction :
      _esi_microcache()
      qui fait exactement cela.

      Mais je n’arrive pas à faire fonctionner les fonctions ESI.

      Sinon, ça serait intéressant :
      – puisqu’il s’agit d’un plugin, il sera sans doute possible de détecter la présence du code <esi : dans le source, et d’ajouter un header destiné à Varnish pour que celui-ci parse cette page spécifiquement ;
      – ensuite, dans supprimer_microcache, être capable de forcer la purge pour cette adresse.

      Et, au final, faire que ça tourne directement sur la fonction microcache, sans modification, uniquement sur une variable de configuration (pour que les mêmes squelettes fonctionnent avec ou sans ESI Varnish).