Url Link

Paramétrage des caches des portlets

In brief...
JCMS offre une fonctionnalité de cache pour les éléments de portail afin d'obtenir des performances proches d'un site statique. Cet article décrit le fonctionnement de ces caches et leur paramétrage.
Subject Functional Administration
Portal
Products JCMS 4
JCMS 5.0
JCMS 5.5
JCMS 5.6
JCMS 5.7
Published 3/24/05
Writer Jean-Phillipe Encausse


1. Introduction

JCMS offre une fonctionnalité de cache pour les éléments de portail afin d'obtenir des performances proches d'un site statique. Cet article décrit le fonctionnement de ces caches et leur paramétrage.

2. Principes de fonctionnement

Dans JCMS, chaque cache est associé à une portlet. Une page peut donc comporter plusieurs caches qui stockent chacun une portion du HTML de la page. Un cache appliqué sur une portlet Ligne ou une portlet Colonne portera sur toutes les portlets composant la ligne ou la colonne. Selon leur type, les caches sont stockés en mémoire ou sur disque. Le rafraîchissement des caches peut être temporel ou événementiel. Enfin, il est possible de paramétrer la portée d'un cache selon les données qu'il contient.

3. Types de Cache

On distingue deux familles de cache :

  1. Icône de caches globaux (mémoire) Les caches "globaux", destinés aux parties communes du site.
    Fréquemment utilisées et généralement peu nombreux, ils sont stockés en mémoire. Ce sont les caches les plus performants.
    Ils sont appelés "caches globaux" (ou anciennement cache "serveur") car communs à l'ensemble des visiteurs.
    Le nombre de caches globaux conservés en mémoire est limité par la propriété "cache-mgr.max-servers-cache-nbr", en conservant en priorité les caches qui sont utilisés fréquemments (LRU). Cette valeur est fixé par défaut à 1000 entrées, augmenter cette valeur améliorera les performances au détriment de la consommation mémoire.
  2. Icône de caches sessions (sur disque) Les caches "sessions" destinés aux parties personnalisées du site.
    Ils sont propres à la session d'un utilisateur. Comme ils peuvent être nombreux (autant que de sessions ouvertes), ils sont stockés sur disque. Ils sont destinés à mettre en cache des informations personnalisé pour le lecteur La durée de vie de ces caches dépend du paramétrage de l'invalidation (temporelle ou événementielle) mais aussi de la durée de la session utilisateur (généralement 30 minutes). Ces caches sont moins efficaces que les caches "Globaux" car ils ne sont efficaces qu'à partir du second accès de l'utilisateur lors de chaque nouvelle session.
    Ils sont appelés "caches sessions" car dépendant de la session utilisateur.

Il existe 6 types de cache pour une Portlet :

  • Cache global Icône de caches globaux (mémoire)
    Ce cache sera commun à toutes les requêtes.
    ? A utiliser sur les portlets dont le contenu est identique pour tous les utilisateurs.
  • Cache par session J2EE Icône de caches sessions (sur disque)
    Un caches sessions sera créé pour chaque session J2EE
  • Cache par sessions de membre, et global pour les visiteurs Icône de caches globaux (mémoire) (depuis JCMS 5.5)
    Il s'agit d'un cache par session J2EE lorsque un membre est identifié, et d'un cache global pour tous les autres visiteurs du site
    ? A utiliser sur les portlets dont le contenu est identique lorsque l'utilisateur n'est pas encore connecté, et dont le contenu sera personnalisé après connexion.
  • Cache global pour les visiteurs uniquement Icône de caches globaux (mémoire) (depuis JCMS 5.5)
    Ce type de cache n'est actif que pour les visiteurs du site, ils bénéficient alors d'un cache global.
    ? A utiliser sur les portlets dont le contenu est identique lorsque l'utilisateur n'est pas encore connecté. Mais dont le contenu personnalisé après connexion serait trop lourd à cacher en mémoire.
  • Cache par groupe Icône de caches globaux (mémoire)
    Déduit à partir des groupes auxquels appartient le membre identifié, tous les membres appartenant exactement aux même groupes bénéficieront de ce cache.
  • Cache par membre Icône de caches globaux (mémoire)
    Les caches sont communs à toutes les sessions J2EE d'un membre identifié.
Les caches "Groupe" et des caches "Membre" sont des caches "Globaux" dont la portée dépend des groupe(s) ou du membre. Ces caches sont plus efficaces que les caches sessions (puisqu'ils sont en mémoire et ne sont pas invalidés par la fin de session). Ils garantissent un certains niveau d'isolation mais ils sont plus gourmand en mémoire et n'opèrent que pour les membres authentifiés. Ils sont donc à réserver aux sites où les utilisateurs sont authentifiés et peu nombreux.

4. Affinement

Il est possible d'affiner les caches en fonction de la catégorie du portail ou de la catégorie courante. La portée du cache est alors fonction de la catégorie consultée. Cet affinement doit être activé pour les portlets Requête/Itération ou les portlets Navigation utilisant elles aussi une méthode d'affinement.

cache1

5. Rafraîchissement des caches

Plusieurs techniques permettent le rafraîchissement des caches afin d'éviter aux utilisateurs la visualisation d'informations obsolètes. Le rafraîchissement consiste à mettre à jour le contenu du cache.

5.1 Rafraîchissement temporel

Les caches peuvent être rafraîchis au bout d'un certain temps. A partir de JCMS 4.1.1, il s'agit d'un rafraîchissement retardé, c'est-à-dire que le rafraîchissement du cache n'a lieu que lorsqu'il est réinterrogé.

5.2 Rafraîchissement événementiel

Les caches peuvent être rafraîchis en fonction des création/suppression/modification des objets d'un certain type de données. C'est typiquement ce type de rafraîchissement que l'on choisira pour une portlet Requête/Itération. Pour éviter des rafraîchissements inutile, seuls les publications dans un état visible (i.e. dans l'état Publié) sont pris en compte. Ceci implique que la portlet Workflow (qui présente des contenus dans des états non visibles) ne doit pas utiliser ce type de rafraîchissement.


6. Désactivation des caches

Dans certaines conditions un cache peut être désactivé. Dans ce cas, il n'est ni utilisé ni rafraîchi. Par ailleurs, si lorsque le cache d'une portlet est désactivé, tous les caches des portlets contenant cette portlet le sont aussi.

6.1 Portlet Sélection (FullDisplay)

Le cache d'une portlet Sélection (ou de toute portlet implémentant l'interface FullDisplay) est désactivé si la requête contient les paramètres "jsp" ou "portlet", ou qu'une publication est en attribut de requête. En conséquence, les éléments (JSP, portlet ou publication) affichés en FullDisplay ne sont pas mis en cache.

6.2 Actions de portlet

Une portlet peut proposer à l'utilisateur des actions qui altèrent son contenu. C'est par exemple le cas de la portlet Calendrier qui permet le changement du mois ou d'une portlet Requête/Itération comportant une pagination. Ces actions de portlet (changement de mois, changement de page) désactivent automatiquement le cache de la portlet.

6.3 Rédacteurs

Si un utilisateur à la possibilité d'éditer ou publier un contenu (i.e. un rédacteur), tous les caches serveurs seront désactivés si les icônes d'édition sont visibles (paramétrable dans les Propriétés).

6.4 Edition du portail

Enfin, lorsqu'on est en mode édition du portail, tous les caches sont désactivés.


Member Discussions

Login   Home   fr en
JALIOS SA - SIREN 440 126 035