[spip-dev] Proposition de nouvelle fonctionnalite (gestion du cache)

Bonjour.

Je suis en train de mettre en place un site associatif interne (pour
Artisans du Monde sur Lyon) sous SPIP, et le public visé m'oblige à
faire quelques ajustements, ayant pour but principal de simplifier le
fonctionnement de base. Un de ces ajustemens concerne la fonctionnement
du cache : lorsqu'une personne poste un nouvel article (qui est validé
automatiquement, suite à une première modification du code de SPIP. De
toute façon, on fait une modération a posteriori), le portail qui
recense tous les nouveaux articles n'est pas mis à jour. Il a besoin
d'un recalcul. Le faire de manière manuelle ne m'intéresse pas, c'est
trop demander aux utilisateurs.

L'idée de ma proposition est de pouvoir spécifier une table de
correspondances inverses entre certains éléments de la base (RUBRIQUES,
dans un premier temps, puis éventuellement les articles) et certains
documents. Une mise à jour d'une rubrique spécifiée entraine la
suppression de la version cachée du (des) document(s) correspondants.
Ainsi, la nouvelle version sera recalculée automatiquement.

J'ai commencé à faire dans articles.php3 (en substance) :

[...]
include_ecrire("../inc-cache.php3");

if ($requete) {
  $nom_fichier = "../CACHE/".generer_nom_fichier_cache($requete);
  
  if (file_exists($nom_fichier) {
     @unlink($nom_fichier);
  }
}
[...]

mais ça me gêne au niveau propreté, vu que la gestion du cache est
cantonnée au répertoire spip/ et que les scripts de ecrire/ ne devraient
pas avoir à l'attaquer directement. Et ce n'est pas assez
générique/paramétrable : un fichier de conf serait le bienvenu.
Dans ce fichier, on pourrait spécifier des couples (fichier,
paramètres), et la modification (au niveau de articles.php3) d'un
article correspondant aux paramètres entraine la mise à jour du fichier
spécifié.

Ça interpelle quelqu'un, ou c'est complétement farfelu ?

Dans tous les cas, je suis preneur des conseils sur les points d'entrée.

Olivier

PS: si vous répondez "faux" à la deuxième partie de la question, faites
de même avec la suggestion suivante : mettre en place dans SPIP un
mécanisme générique de gestion d'événements, sur le principe des hooks
qui existent dans différents systèmes (emacs, FAI, ...) : en insérant un
appel à une fonction execute_hook ("nouvel_article"), et en précisant
bien l'interface d'utilisation (variables modifiables, actions
possibles, etc), on obtient un mécanisme d'extension de SPIP, qui permet
notamment de faire ce que je propose plus haut. Bon, j'arrête là parce
que je ne coderai jamais ça, c'est trop gros. Mais ça me semble
intéressant.

le portail qui
recense tous les nouveaux articles n'est pas mis à jour. Il a besoin
d'un recalcul. Le faire de manière manuelle ne m'intéresse pas, c'est
trop demander aux utilisateurs.

Et automatiquement ? Il y a la durée d'expiration du cache....

Dans ce fichier, on pourrait spécifier des couples (fichier,
paramètres), et la modification (au niveau de articles.php3) d'un
article correspondant aux paramètres entraine la mise à jour du fichier
spécifié.

Ton sommaire affiche les 10 derniers articles publiés. Comment spécifies-tu
cette dépendance ?