1. Descripción general
En las aplicaciones web, la generación de algunos informes puede tardar mucho en calcularse en la base de datos; algunos sitios web proporcionan información meteorológica, lo que requiere acceso a un servidor remoto para realizar una llamada SOAP para obtener información sobre la temperatura. Todos estos son ejemplos de información compleja. Agregar demasiada información compleja a una página web puede provocar que el servidor web y el servidor de base de datos se sobrecarguen. jsp (la primera opción para aplicaciones de nivel empresarial SUN) (la primera opción para aplicaciones de nivel empresarial SUN) el almacenamiento en búfer de bloques de código brinda a los desarrolladores la libertad de agregar información compleja a voluntad.
jsp (la primera opción para aplicaciones de nivel empresarial SUN) (la primera opción para aplicaciones de nivel empresarial SUN) puede encapsular y ejecutar código Java complejo en la biblioteca de etiquetas, lo que hace que jsp (la primera opción para aplicaciones de nivel empresarial SUN) (la primera opción para aplicaciones de nivel empresarial SUN) Los archivos son más fáciles de mantener, lo que hace que sea más conveniente para los desarrolladores no profesionales utilizar jsp (la primera opción para aplicaciones de nivel empresarial SUN) (la primera opción para aplicaciones de nivel empresarial SUN) aplicaciones de nivel) archivos de página. Ya existen muchas bibliotecas de etiquetas, que son productos comerciales o productos de código abierto. Pero la mayoría de estos productos solo usan bibliotecas de etiquetas para implementar funciones que se pueden implementar con un simple Scriptlet de Java. Pocos productos usan etiquetas personalizadas de alguna manera creativa para proporcionar jsp (aplicaciones de nivel empresarial SUN) (la primera opción para). La biblioteca de etiquetas personalizadas de las aplicaciones SUN de nivel empresarial era casi imposible de lograr antes.
La biblioteca de etiquetas OSCache está diseñada por OpenSymphony. Es una aplicación de etiquetas personalizada jsp (primera opción de la aplicación de nivel empresarial SUN) innovadora que brinda la capacidad de utilizar jsp existente (la primera opción de la aplicación de nivel empresarial SUN). elección) (La primera opción para aplicaciones SUN de nivel empresarial) realiza la función de almacenamiento rápido en memoria intermedia dentro de la página. Si bien hay algunos proveedores que ofrecen productos de almacenamiento en caché en diversas formas, todos son productos específicos del proveedor. OSCache se puede ejecutar en cualquier servidor compatible con jsp (primera opción de la aplicación de nivel empresarial SUN) (primera opción de la aplicación de nivel empresarial SUN) No solo puede almacenar en caché el jsp existente (primera opción de la aplicación de nivel empresarial SUN) (aplicación de nivel empresarial SUN). ) para todos los usuarios. La primera opción para aplicaciones) bloques de código y se pueden almacenar en el búfer por usuario. OSCache también incluye algunas funciones avanzadas para mejorar la escalabilidad, como almacenamiento en búfer en disco, vaciado de búfer programable, control de excepciones, etc. Además, al igual que otros productos OpenSymphony, el código de OSCache se distribuye gratuitamente bajo una licencia de código abierto.
Este artículo toma como ejemplo un proceso de diseño de un sitio web de subasta imaginario para presentar el proceso de trabajo de OSCache. Este sitio web imaginario incluirá: una página de administración que informa sobre las actividades de subastas recientes; una página de inicio completamente funcional con diversa información promocional y una barra de navegación especial que contiene información sobre todas las actividades de subastas pendientes del usuario;
2. Página de administración
El sitio web de la subasta contiene un informe de administración y el servidor de la base de datos tarda varios segundos en crear dicho informe. Es importante que el informe tarde mucho en generarse, porque es posible que tengamos varios administradores monitoreando el funcionamiento del sistema y queremos evitar volver a generar el informe cada vez que el administrador nos visite. Para lograr esto, encapsularemos toda la página en una etiqueta de búfer a nivel de aplicación que se actualiza cada hora. Algunos productos de otros proveedores tienen una funcionalidad similar, solo que OSCache lo hace mejor que ellos.
En aras de la simplicidad, no nos centraremos demasiado en los problemas de formato. Al escribir la página de administración, primero agregamos la declaración de la biblioteca de etiquetas a la página:
<%@ taglib uri="cachetags" prefix="cache" %>
Luego tenemos que rodear toda la página con etiquetas de caché. El tiempo de caché predeterminado para las etiquetas de caché es 1 hora.
<cache:cache> .... Informes de administración complejos.... </cache:cache>
La página de administración ahora se ha almacenado en caché. Si el administrador vuelve a acceder a la misma página dentro de una hora después de generarla, verá la página previamente almacenada en caché y no es necesario que el servidor de la base de datos genere este informe nuevamente.
3. Página de inicio
La página de inicio del sitio web de subastas muestra las actividades del sitio web y promueve las subastas que están a punto de finalizar. Queremos mostrar la cantidad de subastas en curso, la cantidad de usuarios actualmente conectados, una lista de subastas que finalizarán en un futuro próximo y la hora actual. Estos mensajes tienen diferentes requisitos de precisión de tiempo. Las subastas en el sitio web suelen durar varios días, por lo que podemos establecer el tiempo para almacenar el número de subastas válidas en 6 horas. La cantidad de usuarios obviamente cambiará con más frecuencia, pero aquí almacenaremos este valor en buffer durante 15 minutos a la vez. Finalmente, queremos que la hora actual que se muestra en la página sea siempre la hora exacta en que se accedió a la página.
Después de declarar la biblioteca de etiquetas en la página de inicio, primero generamos la fecha actual directamente sin almacenamiento en búfer:
ahora es: <%=new java.util.Date()%>
A continuación, queremos mostrar una lista de aquellas que subastarán que finalizan en el corto plazo:
<cache:cache> <ul> <% // Construir un iterador que contenga las subastas más recientes Iterador subastas = .... while (auctions.hasMore()) { Subasta de subasta = (Subasta) subastas .next(); %><li><%=subasta%></li%< } %> </ul> </cache:cache>