
Jusqu’à présent les fonctionnalités de personnalisation de SPIP-Agora souffrent des faibles performances proposées.
L’identification du cache de SPIP-Agora se basant sur :
le nom du squelette
paramètres HTTP
La personnalisation contraint les webmestres à fixer un délai à 0 secondes sur les squelettes faisant appel à ces fonctions. C’est à dire qu’aucune des pages HTML générées n’est stockée pour ne pas fournir à un utilisateur une page destinée à un autre. Le calcul des squelettes se fait donc à chaque requête utilisateur.
Pour remédier à cette faiblesse, le cache de SPIP-Agora doit être capable de gérer un cache html pour chaque utilisateur. Il doit donc être capable de prendre en compte l’identifiant de l’utilisateur connecté.
C’est ce que propose le nouveau module du cache disponible depuis la version 1.2.2 beta 3.
Pour satisfaire à cette contrainte, j’ai choisi une approche basée sur la notion de "groupe de cache". Dans notre cas les groupes suivants sont définis :
pour un squelette classique : nom_du_squelette
pour un squelette de personnalisation : id_auteur,nom_du_squelette
Ce choix nous facilite par la suite la manipulation et la maintenance du cache afin de :
Supprimer l’ensemble du cache
Supprimer le cache de personnalisation d’une personne
forcer le recalcul du cache de personnalisation d’une personne
Supprimer le CACHE associé à un squelette
La notion de Container est également utilisée pour offrir aux webmestres le choix du type de support du cache et sa configuration (actuellement seul un support sur fichier est proposé avec la possibilité de configurer son répertoire de stockage).
CacheHTMLdia
Diagramme de classe
Les fichiers du module se trouvent dans l’arborescence suivante :
Explications :
Cette ligne permet de récupérer une instance permettant de gérer un cache html classique.
’article’ correspond à la requête. C’est à dire qu’on demande un objet cache chargé de remonter le cache souhaité. Dans SPIP-Agora ce paramètre correspond au $fond c’est à dire à un squelette.
$GLOBALS[’HTTP_GET_VARS’] et $GLOBALS[’HTTP_POST_VARS’] sont utilisés pour identifier le cache à remonter.
3600 correspond au délai de validité du cache.
Dans le cas d’un cache avec personnalisation, on utilise les paramètres suivants :
2 nouveaux paramètres sont utilisés :
true signifie qu’un objet cache de personnalisation est demandé
$GLOBALS[’auteur_session’][’id_auteur’] Le cache de personnalisation sera basé sur l’identifiant de l’auteur connecté.
Outre les performances améliorées sur les pages de personnalisation , quelques nouveautés sont à citer :