|
|
Dec
21
2005
|
Utilisation de la librairie OSCache avec les JSP |
|
|
|
Optimisation -
Performance
|
|
Ecrit par Kamal AOUDA
|
|
21-12-2005 |
|
Utilisation de la librairie OSCache avec les JSP
L’assemblage des vues composites est une opération très
pénalisante pour les performances surtout sur les sites à forte affluence. Les
filtres que nous avons présentés dans cet article
sont particulièrement adaptés
pour mettre en cache l’intégralité d’une page. Toutefois lorsqu’il s’agit de
mettre en cache les différents blocs des vues composites ces filtres perdent
leur efficacité.
La librairie OSCache d’OpenSymphony apporte une solution simple et élégante à ce
problème. Elle fournit un ensemble préconçu de tags qui libèrent les
développeurs d’une majeure partie des tâches liées à l’utilisation des filtres.
Cette librairie Open Source peut être utilisée pour cacher aussi bien des
fragments de JSP que des JSP entières.
Le package OSCache est disponible gratuitement sur le site d’OpenSymphony
(www.opensymphony.org). Pour l’installer sous
Tomcat, il suffit de
copier l'archive oscache.jar dans le répertoire WEB-INF/lib de l’application et
de placer les fichiers oscache.tld et oscache.properties dans le répertoire WEB-INF/classes.
Une fois ces fichiers copiés il faut modifier le deployement descriptor
(web.xml) de la manière suivante :
<taglib>
<taglib-uri>oscache</taglib-uri>
<taglib-location>classes/oscache.tld</taglib-location>
</taglib>
Pour cacher un fragment particulier dans une page, il faut l'entourer avec le
tag <cache :cache …> comme le montre l’exemple suivant :
<%@ page import="java.util.*" %>
<%@ taglib uri="oscache" prefix="cache" %>
<html>
<head><title>OsCache demonstration</title></head>
<body>
Non cached portion : <%= new Date() %><p>
<cache:cache time="10">
Cached portion: <%= new Date() %> <! (Refreshed every 10 seconds)>
</cache:cache> </body> </html>
Pour tester le fonctionnement du tag il faut charger la page à plusieurs
reprises (bouton refresh du navigateur). La date non cachée s’incrémente alors
que la date cachée reste fixe. Cependant s’il s’écoule un délai de plus de 10
secondes entre chaque rafraîchissement la date cachée est automatiquement mise à
jour.
Il est également possible de cacher le contenu dans le cadre d’une session
utilisateur:
<cache:cache time="10" scope="session">
...
</cache:cache>
OSCache est aussi capable d’associer des identifiants uniques aux tags de façon
à pouvoir les référencer dans d’autres JSP (voir exemple).
Example1.jsp
<%@ page import="java.util.*" %>
<%@ taglib uri="oscache" prefix="cache" %>
<html>
<head><title>Example 1</title></head>
<body>
Non cached portion: <%= new Date() %><p>
<cache:cache key="associatedkey">
Cached portion: <%= new Date() %> <p>
</cache:cache>
<a href="Example2.jsp">Rafraîchir</a>
</body>
</html>
Example2.jsp
<%@ taglib uri="oscache" prefix="cache" %>
<html>
<head><title>Example2.jsp</title></head>
<body>
Flushing the cache...<p>
<cache:flush key="associatedkey" scope="application"/>
<a href="Example1.jsp">Retour</a>
</body>
</html>
La JSP Example1.jsp cache une portion du code en lui associant la clé "
associatedkey". La JSP Example2.jsp utilise cette clef pour vider le cache. Sur
un site de commerce électronique, la clé peut être calculée dynamiquement pour
cacher les informations et les images des produits.
OScahe permet également de limiter le nombre d’objets placés dans le cache. Par
défaut, ce nombre est de 1000 dans la version 1.7.5 mais une fois atteint, la
mémoire est réutilisée selon l’algorithme
LRU
(Least Recently Used) . Pour
augmenter la taille du cache, il suffit d’éditer le fichier oscache.properties
et d’ajuster la valeur du paramètre cache.capacity. Il est d'autre part possible
de configurer OSCache pour cacher les fragments de page sur disque. Pour cela il
suffit de modifier le paramètre cache.path en lui donnant comme valeur le chemin
du répertoire disque où on souhaite conserver les données.
Cela dit, la librairie OSCache a dépassé le stade d’expérimentation. Aujourd’hui
elle est utilisée par des sites aussi prestigieux que theserverside.com et
bénéficie du support d’une communauté de programmeurs de plus en plus
grandissante.
|
|
Dernière mise à jour : ( 25-04-2006 )
|
|
Livre gratuit sur l'optimisation des applications Java/MySQL pour les besoins d'ecommerce |
|
New Page 1
Kamal AOUDA a
le plaisir de vous informer de la publication de son
livre gratuit sur l'optimisation des applications Java/MySQL pour les
besoins du commerce électronique.
Ce livre
propose un référentiel pour l'intégration du
management des performances aux trois premières phases du cycle de
développement (analyse, design, codage). Comme son titre l'indique, ce
livre
ne traite que des problèmes de performance qui sont dus à des
anomalies dans l'analyse, le design et le codage des applications de
commerce électronique et des bases de données auxquelles elles sont
adossées. Sont exclues
du périmètre du
livre
les anomalies attribuables :
* Au réseau qui
connecte l'application à l'Internet.
* Au serveur web et au serveur d'application.
* A la version de la Java Virtual Machine utilisée.
* A tout matériel utilisé par l'application localement ou à distance.
* Aux scripts exécutés du côté du client (Vbscript, Javascript).
Notons par ailleurs que le
livre ne couvre que les phases d'analyse, de design et de codage. Les phases
de test, de déploiement et de maintenance ont été sciemment exclues parce qu'il
existe déjà un nombre conséquent de livres et d'articles qui traitent du
management des performances dans ces 3 phases.
Pour
télécharger
gratuitement ce livre cliquez sur
ce lien. Pour être au courant des mises à jour apportées à ce livre, nous
vous recommandons de
vous inscrire gratuitement à notre site en cliquant sur ce lien.
|
|
|