Si, si, j’ai bien lu et vu que tu pensais bien invalider les listes/ dans ton 
lot d’invalidation, mais
* d’une part cela force une convention (qui certes est utilisée dans Z et 
certains squelettes mais n’a rien d’universel)
* ne couvre pas l’ensemble du problème : tu as plein d'autres cas comme le 
jumbotron de home ou de rubrique, ou l’article d’accueil de la rubrique qui ne 
seront pas traités ni vus car la boucle est directement dans le squelette de la 
rubrique ou de la home, ou la référence à un article similaire sur une page 
d’un autre article etc…

Le problème principal de la gestion de cache c’est que chaque fois que tu 
oublies d’invalider quelque chose qui aurait du l’être et que du vieux contenu 
apparait encore sur le site public cela provoque une insatisfaction et des 
plaintes d’utilisateurs.

Comprends bien qu’en designant ton système tu es prêt à en comprendre et 
accepter les limites et les éventuels petits défauts de ce type, les compensant 
soit par un calcul manuel, soit en laissant vivre et en attendant que cela se 
mette à jour tout seul.
Mais en livrant un cache de ce type par défaut ce n’est pas du tout le même 
comportement qu’on récolterait, mais a contrario une insatisfaction exprimée.

L’objectif du cache c’est d’être invisible : il doit améliorer la performance 
sans impact fonctionnel. Les utilisateurs ne veulent pas un cache il veulent un 
site qui se met à jour quand ils éditent un article sans être obligé de faire 
des manipulations supplémentaires.
Partant de là il y a assez peu d’options viables.

Mais une gestion de cache étendue comme tu l’envisages peut être une option 
proposée aux utilisateurs avancés qui sont conscient des enjeux et gains vs 
désagréments et pour qui du coup cela ne provoquera pas une insatisfaction.

--
Cédric

On 6 mars 2018 à 05:00 +0100, JLuc <j...@no-log.org>, wrote:

> > J’ai pas voulu en rajouter, mais nulle part tu ne traites le problème de « 
> > si je modifie l’article 18 ça impact aussi
> > des pages qui n’ont pas id_article=18 dans le contexte, comme par exemple 
> > la rubrique parente, la home etc. »
>
> Si tout à fait.
> Ça me donne l'impression que tu réponds sans vraiment avoir lu.
> Ces situations sont traitées par la possibilité d'invalider tous les 
> squelettes
> dont le chemin contient une certaine chaîne.
>
> En l'occurence, les 2 exemples que tu évoques contiennent des listes 
> d'articles :
> la rubrique parente est une liste d'articles, de même que la home (entre 
> autres choses).
> En concevant le squelette, on peut ranger tous ces fichiers squelettes
> dans un répertoire dont le nom contient la chaine 'liste',
> ou leur donner un nom de fichier contenant la chaine 'liste'.
>
> Ensuite, il suffit de passer 'liste' en argument $chemin de la fonction 
> cachelab_filtre
> pour que tous ces caches soient invalidés.
> cf 
> https://zone.spip.org/trac/spip-zone/browser/_plugins_/xray/trunk/cachelab.php#L99
>
> Toutes les listes sont alors invalidées.
----
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Répondre à