Re: Discussion avant pull request sur autorisation pour accès à <:bouton_cache_desactiver:>
Cerdic <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <e39f95c2-88d5-451a-bae7-eb6f2a7a5e89@Spark> |
Hello,
Il y a deux questions dans ta question en fait :)
Ton besoin de départ est d’invalider le cache après une modif éditoriale, et c’est donc ma réponse initiale : il faut utiliser la fonction suivre_invalideur() à laquelle on passe un identifiant d’objet
Comment ça marche en dessous, ça dépend, ça a évolué au gré des versions de SPIP… :)
Il y a eu autre fois une table de gestion des caches, et l’invalidation d’un identifiant cherchait tous les caches concernés et les effaçait.
Mais la mise à jour de cette table des caches coutait beaucoup d’énergie et de performance.
Actuellement on est arrivé au point ou il est apparu que le compromis qui marche le mieux le plus souvent c’est de ne pas chercher à faire dans la finesse. Quand un objet éditorial est publié et que suivre_invalideur() est appelé il met juste à jour un flag dernière_modif dans les metas, et ensuite la gestion de cache considère que tous les caches plus anciens sont invalides, ce qui implique leur mise à jour au prochain affichage.
Donc oui *actuellement* ecrire_meta('derniere_modif', time()) suffit à actualiser tout le cache
*MAIS* tu ne dois surtout pas faire ça dans tes modifs éditoriales, car demain ça pourait marcher autrement et ton code n’invaliderait plus rien.
Par contre, en appelant la fonction suivre_invalideur() tu t’assures que ça marchera toujours, avec le cache tel qu’il est géré maintenant ou plus tard, ou avec un plugin qui modifie le comportement du cache etc.
--
Cédric
Le 24 janv. 2019 à 22:03 +0100, 6ril <[email protected]>, a écrit :
> Le 24/01/2019 à 09:27, Cerdic a écrit :
> > Hello,
> >
> > La bonne pratique pour invalider le cache après modification éditoriale
> > c’est ça
> >
> > https://git.spip.net/SPIP/spip/src/branch/master/ecrire/action/editer_objet.php#L409
> >
> > (surtout pas purger le cache !)
> >
>
> Bonsoir Cédric,
> Je ne veux pas être lourd, dans ce cas ne pas hésiter à le dire, je
> comprendrai, mais je me lance, après tout ce temps passé à devoir y
> renoncer, de comprendre un peu la boite noire épouvantail (pour moi,
> bien sûr) du cache Spip.
> De ce que je lis du code actuel
> https://git.spip.net/SPIP/spip/src/branch/master/ecrire/inc/invalideur.php#L131,
> un simple
> ecrire_meta('derniere_modif', time())
> à la suite d'une modif en bd, suffirait pour actualiser une page (pas le
> squelette, juste les données) ?
> j'ai testé sur une modif en bdd, et ça a l'air d'être le cas.
> Je suis très intéressé par quelques réponses de qui que soit d'avisé sur
> le sujet (sachant que je manipule depuis longtemps des "objets"
> éditoriaux non déclarés dans le système (pour l'instant, faute de mieux,
> je fais comme je peux) gérés cependant par cvt en privé et affichés en
> public par boucles et balises.
>
>
> _______________________________________________
> liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> doc: http://www.spip.net/
> dev: http://trac.rezo.net/trac/spip/
> irc://irc.freenode.net/spip