[SPIP Zone] Vider le cache à partir d'un plugin

Dans le cadre d'un plugin qui intervient de manière substantielle sur la base de données (après une opération de maintenance), il semble pertinent d'invalider tout le cache afin que toutes les pages soient recalculées (au cas où l'utilisateur oublierait d'aller vider le cache).

Est-ce qu'ajouter au traitement la commande suivante est suffisante ?

ecrire_meta('derniere_modif',time());

SPIP va-t-il recalculer toutes les pages dont le cache est antérieur ?

Cordialement

Joseph

On 08/02/2010 16:35, Joseph wrote:

Dans le cadre d'un plugin qui intervient de manière substantielle sur la
base de données (après une opération de maintenance), il semble
pertinent d'invalider tout le cache afin que toutes les pages soient
recalculées (au cas où l'utilisateur oublierait d'aller vider le cache).

Est-ce qu'ajouter au traitement la commande suivante est suffisante ?

ecrire_meta('derniere_modif',time());

C'est pas le plus joli...
Je viens justement de le faire sur CFG Connexion · GitLab :

include_spip('inc/invalideur');
suivre_invalideur('cle/d/invalidation');
ie: souvent objet/id_objet
suivre_invalideur('article/'.$id_article);

Cela provoque la mise à jour de la méta (opération par défaut) mais un plugin pourrait surcharger ce comportement pour gérer très finement les invalidations...

SPIP va-t-il recalculer toutes les pages dont le cache est antérieur ?

Oui, ou non... en fait par défaut oui.
En pratique :
- spip ne supprime pas les anciens fichiers tout de suite
- la constante _NO_CACHE peut influer le comportement si présente
- le plugin cache_cool provoque un calcul, mais au HIT suivant celui qui le demande (ce qui fait que le bonhomme a un vieux cache, mais rapidement) pour peu que l'ancien cache était là :stuck_out_tongue:

--
MM.

Le 08/02/2010 16:16, Matthieu Marcillaud a écrit :

include_spip('inc/invalideur');
suivre_invalideur('cle/d/invalidation');
ie: souvent objet/id_objet
suivre_invalideur('article/'.$id_article);

A quoi correspond au juste 'cle/d/invalidation' ? il s'agit d'un nom de squelette ?

Est-ce que 'article' fonctionne pour mettre à jour toutes les pages articles ?
Cela joue-t-il sur les inclusions ?
Est-ce que 'sommaire' fonctionne pour mettre à jour le cache de la page sommaire ?

Encore merci pour tes réponses

Jo

On 08/02/2010 17:41, Joseph wrote:

Le 08/02/2010 16:16, Matthieu Marcillaud a écrit :

include_spip('inc/invalideur');
suivre_invalideur('cle/d/invalidation');
ie: souvent objet/id_objet
suivre_invalideur('article/'.$id_article);

A quoi correspond au juste 'cle/d/invalidation' ? il s'agit d'un nom de
squelette ?

Est-ce que 'article' fonctionne pour mettre à jour toutes les pages
articles ?
Cela joue-t-il sur les inclusions ?
Est-ce que 'sommaire' fonctionne pour mettre à jour le cache de la page
sommaire ?

Comme j'ai essayé de l'expliquer, quelque soit ce que tu mets, tout le cache est invalidé par défaut. Ce qui n'était pas le comportement avant SPIP 2 et ce que pourrait modifier un plugin éventuellement. Mais là, oui, te mets 'truc', ou même rien, et ça invalide le cache.

--
MM.

Le 8 février 2010 17:41, Joseph <joseph@larmarange.net> a écrit :

Le 08/02/2010 16:16, Matthieu Marcillaud a écrit :

include_spip('inc/invalideur');
suivre_invalideur('cle/d/invalidation');
ie: souvent objet/id_objet
suivre_invalideur('article/'.$id_article);

A quoi correspond au juste 'cle/d/invalidation' ? il s'agit d'un nom de
squelette ?

le principe c'est qu'on dit ce qu'on invalide (donc effectivement en
général objet/id_objet, mais ce peut être "sommaire/" ou tout ce que
tu veux de comprehensible), et, potentiellement, un plugin peut gérer
finement les caches et invalider uniquement ceux qui sont liés à ce
que tu as invalidé.

Dans SPIP < 2.0, il y avait une usine à gaz de ce type. Mais
l'expérience a montré qu'elle dépensait plus d'énergie à maintenir une
table à jour des liens entre cache et objet (à base d'insertion en
BDD), que ce qu'elle était susceptible de faire économiser, alors même
qu'elle ne fonctionnait qu'imparfaitement, requerant souvent
d'utiliser le bouton 'calculer' pour remettre à jour le cache.

Donc depuis SPIP 2.0, la stratégie est beaucoup plus simple.
Néanmoins, il reste pertinent d'indiquer un invalideur ayant un sens
pour permettre à des plugins éventuels de faire leur travail
intelligemment.

Cédric