1. Présentation
Dans les applications Web, la génération de certains rapports peut prendre beaucoup de temps pour que la base de données calcule ; certains sites Web fournissent des informations météorologiques, ce qui nécessite l'accès à un serveur distant pour effectuer un appel SOAP afin d'obtenir des informations sur la température. Ce sont tous des exemples d’informations complexes. L'ajout d'informations trop complexes à une page Web peut entraîner une surcharge du serveur Web et du serveur de base de données. jsp (le premier choix pour les applications SUN de niveau entreprise) (le premier choix pour les applications SUN de niveau entreprise) la mise en mémoire tampon des blocs de code offre aux développeurs la liberté d'ajouter diverses informations complexes à volonté.
jsp (le premier choix pour les applications SUN de niveau entreprise) peut encapsuler et exécuter du code Java complexe dans la bibliothèque de balises, ce qui fait du jsp (le premier choix pour les applications SUN de niveau entreprise) (le premier choix pour les applications SUN de niveau entreprise) pages Les fichiers sont plus faciles à maintenir, ce qui permet aux développeurs non professionnels d'utiliser plus facilement jsp (le premier choix pour les applications SUN de niveau entreprise) (le premier choix pour les applications SUN de niveau entreprise) applications de niveau) fichiers de page. Il existe déjà de nombreuses bibliothèques de balises, qui sont soit des produits commerciaux, soit des produits open source. Mais la plupart de ces produits utilisent uniquement des bibliothèques de balises pour implémenter des fonctions qui peuvent être implémentées avec un simple Java Scriptlet. Peu de produits utilisent des balises personnalisées de manière créative pour fournir des jsp (applications SUN au niveau de l'entreprise) (le premier choix pour). applications SUN au niveau de l'entreprise) était presque impossible à réaliser auparavant.
La bibliothèque de balises OSCache est conçue par OpenSymphony. Il s'agit d'une application de balises personnalisées jsp révolutionnaire (premier choix de l'application de niveau entreprise SUN) qui offre la possibilité d'utiliser le jsp existant (premier choix de l'application de niveau entreprise SUN). choix)( Le premier choix pour les applications SUN de niveau entreprise) réalise la fonction de mise en mémoire tampon rapide au sein de la page. Bien qu'il existe quelques fournisseurs proposant des produits de mise en cache sous diverses formes, il s'agit tous de produits spécifiques au fournisseur. OSCache peut s'exécuter sur n'importe quel serveur compatible jsp (premier choix de l'application de niveau entreprise SUN) (premier choix de l'application de niveau entreprise SUN) 1.1. Il peut non seulement mettre en cache les jsp existants (premier choix de l'application de niveau entreprise SUN) (application de niveau entreprise SUN). ) pour tous les utilisateurs. Le premier choix pour les applications) blocs de code et peuvent être mis en mémoire tampon pour chaque utilisateur. OSCache comprend également certaines fonctionnalités avancées pour améliorer l'évolutivité, telles que la mise en mémoire tampon sur disque, le vidage de tampon programmable, le contrôle des exceptions, etc. De plus, comme d'autres produits OpenSymphony, le code d'OSCache est distribué gratuitement sous une licence open source.
Cet article prend comme exemple un processus de conception de site Web d'enchères imaginaire pour présenter le processus de travail d'OSCache. Ce site Web imaginaire comprendra : une page de gestion qui rend compte des activités d'enchères récentes ; une page d'accueil entièrement fonctionnelle avec diverses informations promotionnelles et une barre de navigation spéciale qui contient des informations sur toutes les activités d'enchères non réglées de l'utilisateur ;
2. Page de gestion
Le site Web d'enchères contient un rapport de gestion et il faut plusieurs secondes au serveur de base de données pour créer un tel rapport. Il est important que la génération du rapport prenne beaucoup de temps, car plusieurs administrateurs peuvent surveiller le fonctionnement du système et nous voulons éviter de régénérer le rapport à chaque visite de l'administrateur. Pour y parvenir, nous encapsulerons la page entière dans une balise tampon au niveau de l’application qui est actualisée toutes les heures. Certains produits d'autres fournisseurs ont des fonctionnalités similaires, mais OSCache le fait mieux qu'eux.
Par souci de simplicité, nous ne nous concentrerons pas trop sur les questions de formatage. Lors de l'écriture de la page de gestion, nous ajoutons d'abord la déclaration de la bibliothèque de balises à la page :
<%@ taglib uri="cachetags" prefix="cache" %>
Ensuite, nous devons entourer la page entière de balises de cache. La durée de cache par défaut pour les balises de cache est de 1 heure.
<cache:cache> .... Rapports de gestion complexes.... </cache:cache>
La page de gestion est maintenant mise en cache. Si l'administrateur accède à nouveau à la même page dans l'heure qui suit la génération de la page, il verra la page précédemment mise en cache et le serveur de base de données n'aura pas besoin de générer à nouveau ce rapport.
3. Page d'accueil
La page d'accueil du site Web d'enchères affiche les activités du site Web et fait la promotion des enchères sur le point de se terminer. Nous souhaitons afficher le nombre d'enchères en cours, le nombre d'utilisateurs actuellement connectés, une liste des enchères qui doivent se terminer dans un avenir proche et l'heure actuelle. Ces messages ont des exigences différentes en matière de précision temporelle. Les enchères sur le site Web durent généralement plusieurs jours, nous pouvons donc régler le temps nécessaire pour tamponner le nombre d'enchères valides à 6 heures. Le nombre d'utilisateurs changera évidemment plus fréquemment, mais ici nous mettrons en mémoire tampon cette valeur pendant 15 minutes à la fois. Enfin, nous voulons que l'heure actuelle affichée sur la page soit toujours l'heure exacte à laquelle la page a été consultée.
Après avoir déclaré la bibliothèque de balises dans la page d'accueil, nous affichons d'abord la date actuelle directement sans mise en mémoire tampon :
elle est maintenant : <%=new java.util.Date()%>
Ensuite, nous souhaitons afficher une liste de celles qui seront mises aux enchères. qui se terminent à court terme :
<cache:cache> <ul> <% // Construire un itérateur contenant les enchères les plus récentes Itérateur enchères = .... while (auctions.hasMore()) { Auction enchères = (Auction) enchères .next(); %><li><%=enchères%></li%< } %> </ul> </cache:cache>