Recomendado: Haga un buen uso de la asignación de URL ASP.NET 2.0 Introducción: el mapeo de URL es una nueva característica proporcionada en ASP.NET 2.0. La tecnología de mapeo de URL nos ayuda a asignar una URL específica a otra URL. Para ayudar a comprender, supongamos que tiene una página llamada HomePage.aspx en el sitio para acceder a la página de inicio, y todos los usuarios también la usan
9.3.5 caché de datosEn primer lugar, es importante tener en cuenta que aunque tanto el caché de datos como el caché de conjunto de registros se utilizan para mejorar el rendimiento, los dos son irrelevantes. El caché de datos es un área de almacenamiento de datos temporal que permite el uso de datos en el caché en lugar de regenerar nuevos datos. Esto solo se aplica a datos que no se alteran con frecuencia pero se accede varias veces.
Una de las formas más fáciles de almacenar en caché en ASP es usar variables de aplicación y sesiones. Por ejemplo, suponga que hay algunas páginas web que necesitan elegir un tipo de libro. En circunstancias normales, se puede crear un archivo de inclusión con las siguientes funciones.
<%
Function booktypes ()
Dim RSBookTypes
Dim strquote
strquote = chr (34)
Establecer rBookTypes = Server.CreateObject (ADODB.RecordSet)
'Obtén los tipos de libros
rsbooktypes.open usp_booktypes, strconn
Response.Write <Select name = & strQuote & lstbookType & strquote &>
Mientras que no rsbooktypes.eof
Response.Write & <Option> & rsbookTypes (tipo) y </opción>
rsbooktypes.movenext
Encaminarse a
Response.Write & </Select>
rsbooktypes.close
Establecer rBookTypes = nada
Función final
%>
Esto simplemente llama a un procedimiento almacenado para obtener el tipo de libro mientras crea una lista seleccionada. La desventaja del código anterior es que cada vez que se llama a la función, se debe acceder a la base de datos. Por lo tanto, vuelva a modificar esta función.
<%
Function booktypes ()
Dim RSBookTypes
Dim strquote
Dim Strlist
'Vea si la lista está en el caché
strlist = aplicación (booktypes)
Si strlist = entonces
'No almacenado en caché, así que construya la lista y la tache
strquote = chr (34)
Establecer rBookTypes = Server.CreateObject (ADODB.RecordSet)
'Obtén los tipos de libros
rsbooktypes.open usp_booktypes, strconn
strlist = <select name = & strQuote & lstbookType & strquote &>
Mientras que no rsbooktypes.eof
strlist = strlist & <pection> & rsbookTypes (type) y </opción>
rsbooktypes.movenext
Encaminarse a
strlist = strlist & </select>
rsbooktypes.close
Establecer rBookTypes = nada
'Revise la lista
Aplicación (Booktypes) = Strlist
Final si
Booktypes = strlist
Función final
%>
Este código no solo abre el conjunto de registros, sino que verifica si el valor de la variable de aplicación Booktype está vacío. Si no está vacío, se utilizan el contenido de la variable. Si está vacío, el conjunto de registros se abre como antes. Obviamente, una vez que la primera persona ejecuta esta rutina, los datos se almacenan en caché, por lo que esto solo es útil para aquellos datos que a menudo no se cambian.
Si desea almacenar en caché los datos de un usuario, puede usar variables en el alcance de la sesión, pero debe tener en cuenta que la sesión tiene una fecha de vencimiento. Después de la expiración, la variable de la capa de sesión se cancelará junto con la sesión, y el código puede terminar la ejecución.
Usando la herramienta de estrés de aplicación web (WAS), se obtuvieron los resultados del análisis en la Tabla 9-4:
Tabla 9-4 Los resultados del análisis obtenidos utilizando fueron herramientas
método
Clics de la página
Sin caché
190
Tener un caché
11000
Es obvio que el rendimiento ha mejorado. Pero no use el método anterior para almacenar todo. Después de todo, este enfoque solo es aplicable a los datos que se han formateado para la visualización. Además, considere que si el servidor web solo sirve a una persona específica, apenas es un uso típico del servidor web. Usar WAS le permite simular varios usuarios en un solo servidor, lo que le permite probar su aplicación de manera más realista.
Al simular un cierto número de usuarios, la herramienta de estrés de aplicación web puede probar la tolerancia de las páginas web. La herramienta tiene una interfaz gráfica simple que es muy fácil de usar. Se puede obtener más información de http://homer.rte.microsoft.com/ o descargar la herramienta.
Objetos de caché
¿Qué debo hacer si quiero almacenar en caché los datos sin formato? ¿Se puede usar de diferentes maneras en diferentes lugares? Por supuesto, también puede hacerlo con variables de aplicación o sesión. Considere el título del libro. Es posible que desee usar este título en varias páginas, tal vez mostrar todos los títulos en una tabla, o mostrarlos en un cuadro de lista para que los usuarios elijan, etc. Puede pensar en almacenar en caché el conjunto de registros en sí mismo sin tener que almacenar en caché el texto HTML con etiquetas.
Los objetos se pueden almacenar en caché en las variables de aplicación o sesión, pero hay dos problemas principales a los que se les debe prestar atención:
· Los objetos almacenados en las variables de aplicación deben admitir hilos libres, por lo que deben ser objetos de hilo libres o objetos de doble hilo. Esto significa que los componentes creados por VB no se pueden almacenar en caché en la variable de aplicación.
· Al almacenar un objeto de subproceso de unidad en el estado de sesión significa que el hilo que creó el objeto es el único hilo que permite el acceso a él. Por lo tanto, IIS no puede completar mejor la administración de subprocesos porque cualquier página que intente acceder a este objeto debe esperar a que el hilo original sirva a la página. Esto matará cualquier posibilidad de extender la aplicación.
Para la discusión de los problemas de subproceso, ver Capítulo 15.
Por defecto, ADO se carga como un objeto de subproceso de unidad, principalmente porque algunos proveedores de DB OLE no son seguros. Hay un archivo de registro en el directorio de instalación de ADO que convierte ADO en un modelo de dos subprocesos, lo que permite que los objetos ADO se almacenen de manera segura en los objetos de aplicación y sesión.
Puede pensar que todos los problemas se resuelven y se puede lograr un aumento de velocidad significativo mediante el uso de varios tipos de objetos, pero ese no es necesariamente el caso. Muchos se han dado cuenta de que dado que conectarse a una base de datos es una operación relativamente costosa, los objetos de conexión en caché pueden ahorrar mucho tiempo al conectarse nuevamente. Esto es cierto, pero el almacenamiento en caché de un objeto de conexión significa que la conexión nunca se cerrará, por lo que el grupo de caché de conexión es relativamente ineficiente. Una idea que se conecta a los grupos de caché es reducir los recursos utilizados en el servidor, y el almacenamiento en caché de los objetos en el estado ASP obviamente no puede reducir el uso de recursos. De hecho, también se incrementan porque cada caché de objetos ocupa los recursos del servidor, lo que reducirá en gran medida la eficiencia del servidor web para un sitio ocupado.
Entonces, los objetos de conexión no deben almacenarse, pero ¿qué pasa con los objetos de registro, especialmente los registros desconectados? Suponiendo que ADO ha cambiado de un hilo de unidad a un hilo dual, no hay razón para no hacer esto, siempre que sepa exactamente lo que está haciendo. No piense que esto mejorará automáticamente el rendimiento de las páginas ASP. Cada conjunto de registros almacenados en caché toma los recursos del servidor en términos de memoria y administración de ASP, por lo tanto, no almacenen en caché grandes conjuntos de registros.
Compartir: tabla de registro de lectura y escritura de ASP Un ejemplo: el siguiente es el contenido referenciado: <%Dim readComputerName set readComputerName = createObject (wscript.shell) dim computername, regal