[spip-dev] Personnalisation suivant #SESSION et cache de SPIP

Lorsque l'on utilise #SESSION ou #AUTORISER, le cache de SPIP fait automatiquement une séparation pour chaque personne :
- un cache par compte connecté
- un cache commun à tous les visiteurs

Le problème que j'ai plusieurs fois rencontré, c'est lorsque l'on fait souvent des pages "persos" qui n'ont une particularité QUE pour UN compte.

Par exemple, le fait que ce soit marqué "Ma page" quand je suis connecté plutôt que "Page de RastaPopoulos" pour tous les autres.

Dans ces cas là, il y a quand même un énorme problème d'optimisation que je n'arrive pas à résoudre. Car SPIP va créer des caches de page et de morceaux de pages (pour tous les inclure où il y a ce type de personnalisation) pour CHAQUE personne connectée (et sur les sites "modernes" à forte contribution, il peut y en avoir beaucoup), alors que dans l'absolu, il ne faudrait que DEUX versions de la page :
- une pour la personne ayant des personnalisations
- une pour TOUS les autres, visiteurs ET autres comptes

Pour un même squelette, entre des centaines de caches, et deux caches, ya quand même une sacrée différence.

Est-ce que quelqu'un a déjà rencontré ce type de problématique ? Y a-t-il des solutions avec les moyens du core ?

Le pipeline definir_session permet de fixer l'identifiant de session.
Par defaut, toute la globale visiteur_session est prise en compte, mais si ton site n'a besoin que d'une personalisation allégée (genre connecté/pas connecté uniquement), un bon moyen est de redéfinir la session via ce pipeline.

Par contre, le mecanisme est global : c'est la page qui a besoin du plus d'infos de sessions qui sera celle qui fixe le detail de tes sessions.

Sinon
<?php if ($GLOBALS['visiteur_session']) { ...} else { } ?>
est dans certains cas la solution la plus optimisée

Elle permet de n'avoir qu'un seul cache, mais avec du php adapté à chaque visiteur.

Cédric

Oui, c'est peut-être ça qui est la meilleure solution lorsqu'il n'y a des personnalisations que pour une seule personne. Mais comme depuis longtemps maintenant je m'étais obligé à ne plus jamais mettre de PHP dans mes squelettes, je ne pensais plus du tout à ce moyen.

C'est en tout cas un truc à retenir/noter quelque part, pour l'optimisation du cache de pas mal de sites.