Si mes souvenirs sont bons, les filtres dans Jahia 4.x sont des requêtes SQL directes vers la base. Dans Jahia 5.0, les filtres ont été réécrit pour s'appuyer sur la couche (et les caches) Hibernate donc ils ne devraient plus tout recharger chaque fois.
Une autre option consisterait à utiliser des filtres Lucene pour filtrer de telles listes. Ils sont normalement bien plus rapides que les filtres SQL. Par contre il peut y avoir un léger décalage entre l'ajout d'un objet et son apparition dû à l'indexation du contenu (p.69 Template guide).
Cordialement,
Stéphane
At 11:52 14.06.2006, you wrote:
Merci Stéphane pour ces explications, mais il me reste encore un doute :
même si j'utilise oscache, le fait de recharger la page (à l'aide d'une simple action submit du filtre) me recharge de nouveau tous les container attachés à cette page.
En fait j'aimerais faire cette opération (charger tous les containers de la page) une seule fois et ensuite travailler sur les containers ...
Je n'ai pas trouver le moyen de dire à Jahia de ne charger qu'une seule fois les containers de la page X.
Merci de ton aide.
- From: Stéphane Croisier [ mailto:[EMAIL PROTECTED]]
- Sent: 13 June 2006 09:46
- To: [email protected]
- Subject: RE: Problème de performance lors d'un filtre
- Oui mais le cache HTML interne de Jahia est un cache par page entière. Donc quand un portlet ou un filtre est utilisé sur la page, ce cache ne peut pas être utilisé (sinon ce cache renverrait chaque fois la page de garde et non pas le résultat du filtre ou l'écran ad-hoc du portlet).
- Dans de tels cas, il faut introduire dans les JSP un cache HTML permettant de gérer des fragments de contneus plus petits (plus au niveau de la page entière mais au niveau de la liste par exemple). La librairire OSCache offre un tel taglib que vous pouvez facilement rajouter dans votre set de templates. En cherchant rapidemment sur Google, j'ai trouvé cette page qui pourrait vous expliquer rapidement comment utiliser leurs tags: http://www.pas.net/tom/articles/oscache/
- De manière générale, les performances des pages en cache/offonc en /bypass, ... peuvent largement bénéficier d'un cache de type OSCache fragment (non seulement pour le calcul des filtres/tris complexes mais aussi pour l'affichage des menus). Le plus simple est de limiter ces fragments au mode live uniquement. Ensuite à vous de voir si ce contenu est partagé et identique entre tous les utilisateurs (donc une clé de cache unique pour chaque fragment) ou s'il faut également prendre en compte le fait que chaque utilisateur peut potentiellement voir un contenu différent selon ses permissions (rajouter l'utilisateur dans la clé de la hastable).
- C'est d'ailleurs pour ces différentes raisons que nous avons complètement revu le cache HTML par page de Jahia 4.x afin d'introduire un proxy intelligent capable d'aggréger des fragments HTML à la volée (Serveur ESI - www.esi.org et du côté template JSP, la norme JESI s'applique: http://www.jcp.org/en/jsr/detail?id=128 ). Ainsi chaque page est composée de plusieurs fragments. Le fait d'avoir une liste au milieu de sa page permet ainsi de conserver les fragments de type Header/footer/Left menu/... sans devoir systématiquement flusher la page entière. Ceci permet de minimiser et d'optimiser également la taille des fragments HTML stockés en RAM. Et au final le template developer peut choisir précisément, fragment par fragment, la politique de gestion (personnalisation, partage, flush,...) des fragments de sa page. Enfin bref malheureusement ceci ne s'applique que pour Jahia 5.0.
- C'est pour cette raison que je vous conseillais, en attendant de pouvoir bénéficier de caches type ESI, de rajouter dans vos JSP un taglib de cache HTML pour vos pages qui ne sont pas cachées par le cache HTML par page de Jahia ( http://svn.jahia.org/svn/corporate_portal_templates/tags/JAHIA_4_5_M4/src/view/jsp/include/ , vous devriez avoir le fichier include du box_newslast5_cached.inc)
- Cordialement,
- Stéphane
- P.S: le box de type "Last 5 news" est disponible dans la dernière version des coporate portal templates. Merci de jeter sinon un coup d'oeil dans le CVS ( http://svn.jahia.org/svn/corporate_portal_templates/) pour récupérer cet exemple de box utilisant OSCache avec des filtres si vos templates n'utilise pas la dernière version existante.
- At 10:28 12.06.2006, you wrote:
- Bonjour,
- Le cache HTML est déja activé, le souci est que lorsqu'on clic sur un bouton de filtre, les traces sur la console nous montre qu'on reconstruit la strucuture de la page et donc on reconstruit le cache à chaque clic.
- ps : je suis sur jahia v4, et je n'ai pas retrouvé le template box de type Last 5 - 10 - 20 new ...
- Merci
- From: Stéphane Croisier [ mailto:[EMAIL PROTECTED]]
- Sent: 12 June 2006 08:57
- To: [email protected]
- Subject: Re: Problème de performance lors d'un filtre
- Bonjour,
- Le plus simple serait de cacher (HTML Cache fragments) toutes les différentes combinaisons de filtres au fur et à mesure que les utilisateurs les chargent. Il existe un exemple avec OSCache dans les coporate tempaltes (Box de type Last 5-10-20 news qui récupèrent toutes les news sur un site et les filtres). Si le contenu ne change pas trop souvent, le temps d'expiration du cache peut être mis à une date relativement lointaine (ou alors simplement le mettre à une date infinie et prévoir de rajouter un boutton en mode edit permettant de flusher les caches fragments pour cette containerlist).
- Stéphane
- At 18:50 09.06.2006, you wrote:
- Bonjour,
- Je travaille sur un site créé sous Jahia v4.0 puis migré vers Jahia 4.1.2.
- J'ai une page dans laquelle on déclare une containerList avec ses containers.
- Cette containerList compte 450 containers, avec une vingtaine de champs (de type SmallText, File, Page, Date).
- J'ai créé les différents index à la base de donnée (oracle) , .
- Lorsqu'on accède à cette page pour la première fois, le temps de chargement est de l'ordre de 15 sec. Ce qui parait logique car on met en cache le contenu de la page.
- Le souci est que dans cette même page on a des opérations de filtrage. Donc à chaque fois qu'on filtre sur un champ des containers cette page se recharge sans utiliser le cache (temps de chargement de la page d'environ 17 sec ..).
- Je voulais donc savoir si on pouvait soit réutiliser le cache pour nos opérations de filtres, soit désactiver le fait que lors du chargement de la page jahia cherche tous les containers attachés à cette page.
- Merci.
- Ertu
CEO - Jahia Product Ltd, 45 rue de la gare, 1260 Nyon (Switzerland)
Jahia : The Java Unified Web Platform
www.jahia.org - The Product Web Site
www.jahia.net - The Community Web Site
www.jahia.com - The Commercial Services Company
www.collaborativesource.org - The Collaborative Source Initiative
