Optimización de ASP, tecnología ASP Cache
1. ¿Qué es ASP Cache/Por qué caché
Cuando su sitio web se establece en los primeros días de la tecnología ASP, puede sentir la conveniencia traída por la tecnología web dinámica ASP, así como el control HTTP modificado y gratuito aleatorio. Sin embargo, a medida que aumenta la cantidad de visitas, definitivamente encontrará que el acceso a su sitio se está volviendo cada vez más lento, y IIS tiene cada vez más frecuente. A continuación, debe optimizar ASP, como reemplazar más buenas bases de datos, establecer índices, escribir procedimientos de almacenamiento, etc. Algunas de estas medidas no necesitan aumentar la presión de los costos, mientras que algunas de las presión de costos (como el acceso al clúster a SQL), y el efecto no es necesariamente.
Enfrentando la presión del acceso web, creo que el método más económico es utilizar la tecnología de optimización de caché para aliviar la presión del servicio de la web.
El aumento del volumen de acceso web generalmente significa el rápido crecimiento de la siguiente demanda de recursos:
1. Aumento del tráfico de tarjetas de red, es necesario consumir más hilos de tráfico de red de procesamiento de CPU y E/S de red.
2. Es necesario abrir/cerrar la conexión de la base de datos con más frecuencia (si se utiliza la tecnología de la base de datos, generalmente ASP utilizará la base de datos como almacenamiento de datos), la cantidad de cosas que consumen seriamente los recursos y el punto muerto causado por los recursos competitivos de Transacciones, que aumentarán la E/S de la red.
3. Si se usa la sesión, IIS consumirá más memoria para mantener el estado, y el consumo de memoria puede causar memoria física insuficiente, causar un intercambio frecuente entre la memoria física y la memoria auxiliar, lo que hace que la ejecución del código se detenga.
4. Debido a la respuesta oportuna del acceso, se causará la falla de acceso de la página web, lo que hará que los usuarios se actualicen, exacerbando así las necesidades de las CPU, la memoria y otros recursos.
De hecho, teniendo en cuenta la aplicación web habitual, muchas veces la ejecución del código dinámico es innecesaria.
2. Clasificación de ASP Cache
Resumiendo sin autorización, el caché de ASP se puede dividir en dos categorías:
1. Cache de archivo
La memoria caché de archivo que se les ocurre de acuerdo con el juicio lógico. Puede acceder al archivo estático desde la redirección web a la tecnología, para satisfacer las necesidades de reducir las CPU, los recursos de la base de datos. Hay muchas de esas aplicaciones. Castle tiene un efecto secundario (beneficio): esto puede ser fácilmente incluido mediante motores de búsqueda como Google. Algunos sistemas de comunicado de prensa que se encuentran en cuales han adoptado esta tecnología.
2. Cache de ruptura de película de archivo
El caché de archivos que llaman SO también se basa en un juicio lógico. Datos en forma de archivos. Por ejemplo, generalmente almacenamos algunos datos en formato XML, y luego usamos la tecnología XSLT para implementar la pantalla (el procesamiento XML generalmente requiere una gran cantidad de recursos de CPU, por lo que IE generalmente lee XML directamente al cliente para manejarlo en la CPU del cliente). Así es como se procesa el foro de CSDN.
3. Cache de memoria principal
Además, también puede considerar lidiar con el caché en la memoria y almacenar el contenido que debe responder de manera oportuna en la memoria. Si una gran cantidad de necesidades de acceso se concentran en varias páginas pequeñas o almacenamiento principal, quiero usar el caché de memoria principal para mejorar en gran medida el rendimiento de acceso web.
3. Cómo lograr/usar caché
Se deben considerar los siguientes problemas para implementar el caché:
1. ¿Qué páginas no cambiarán en poco tiempo?
Analice su propio sitio, hay muchas páginas. Por ejemplo, un sitio generalmente tiene columnas de noticias e información. Luego, estas páginas son adecuadas para caché con archivos estáticos. De hecho, se realiza el sistema de comunicado de prensa de SO, por lo que también puede consultar las ideas de estos sistemas para transformar su página ASP dinámica original.
2. Esas páginas se generan para todas las visitas para generar la misma lógica (es decir, no distinguir entre los visitantes).
A excepción de las columnas como noticias e información, todos los visitantes miran una interfaz, y la aplicación de recursos como foros y otros recursos de consumo generalmente se puede diseñar como una generación lógica unificada (la misma publicación, Zhang Sanli y Sisi son los mismos los mismos ). Se puede implementar con un caché estático. También puede considerar romper los datos y usar la tecnología de script además de la capacidad de procesamiento del servidor, es decir, el navegador del cliente para el procesamiento.
3. Use el costo y la cosecha de caché.
Principalmente el tiempo para los cambios de espacio (respuesta). Use la tecnología de caché para preprocesar el contenido frecuentemente necesario para mejorar la capacidad de respuesta del servidor web y, lo que es más importante, ganar el favor de los visitantes.
El precio es que la demanda de espacio web aumenta y puede afectar el efecto de acceso.
Pero creo que el caché adecuado es mayor que las desventajas.
4. En lugar de usar caché en esos lugares
La página de consulta dinámica, el contenido de consulta de cada persona es diferente, por lo que los resultados de la pantalla no son los mismos, por lo que es poco probable que genere el caché de resultados de la consulta, por lo que el caché es más complicado y en la parte inferior de la tasa de utilización de caché, lo que resulta en lo que resulta en el caché El costo de gestión.
Cuarto, análisis de instancias
Supongamos que el diseño original de un foro de sugerencias es el siguiente:
En el directorio raíz:
Página de inicio predeterminada.asp, generalmente esencia, recomendación y similares
Listborad.asp Este archivo enumera los nombres y la introducción de todas las columnas.
ListThread.asp El archivo no lleva ningún parámetro para indicar todas las pegatinas y llevar a Mainbid para representar todas las pegatinas de una determinada pieza. Si se transporta subbid para indicar la publicación de la columna específica. Si lleva el parámetro de página para indicar la paginación del tema.
ViewThread.asp enumera un cierto contenido de etiqueta. Suponemos que las publicaciones se muestran como un discurso, y todas las pegatinas siguen a la lista. El parámetro ID es la publicación que se mostrará.
Responder.asp responde a una determinada publicación, lleva la identificación del parámetro para responder a una determinada publicación
No hay otra discusión.
Arriba, podemos ver que si todos se realizan utilizando el ASP/PHP original, la ejecución de casi todos los archivos ASP requieren operaciones de base de datos, consulta frecuente y múltiples consultas. Debe saber que la base de datos de consultas eventualmente generará una disminución en el rendimiento, la velocidad de respuesta disminuye y el lento impacto de la navegación en los visitantes no conducirá a la calidad de la web. Más importante aún, para las dos personas en A y B, visitaron ViewThread.asp y similares si las ID son consistentes, entonces muchas veces verán el mismo contenido (el código HTML recibido por su navegador es casi el mismo), pero para Esto para esto en el mismo contenido, el servidor debe abrir la conexión de la base de datos, consultar, leer registros y mostrar que los registros y las conexiones de la base de datos están cerradas. Esencia Esencia Esencia Si más personas acceden a más personas, el resultado final es que estas personas exacerban los recursos del servidor. De hecho, la mano de obra duplicada para el mismo contenido se puede optimizar con la tecnología de caché. Por ejemplo:
Después de enviar el contenido de Repy.asp, llamamos inmediatamente la función estática para generar el contenido estático a los archivos HTML estáticos, como ViewThread_xxxx.htm, y luego al visitar ViewThread.asp. El archivo estático correspondiente ViewThreadxxxx.htm. De esta manera, cuando una publicación no es más reciente, siempre se le proporciona al contenido estático del espectador;
Listborad.asp también puede implementar Static. Podemos analizar los parámetros que se pueden transportar, establecer el nombre del archivo de caché en listboard_xx.htm y actualizar el listboard_xxx.htm al agregar una nueva columna. ListThread.asp es similar, pero debido a más parámetros, habrá muchos archivos de caché. Si desea almacenar en caché ListThread.asp? Lo mismo es cierto para default.asp.
Entonces, ¿cómo juzgar cuándo actualizar? ¿A qué hora actualizar?
讨论 ListThread.asp? Archivo estático. Tenga en cuenta que ninguna existencia aquí significa que la aparición de contenido nuevo requiere que actualicemos.
¿Cómo pueden no existir los archivos? borrar. Podemos eliminar todos los archivos estáticos como listthread_xxx_p2.htm al publicar una pegatina nueva, eliminar pegatinas y mover pegantes. De esta manera, se notifica al caché.
Todavía queda un problema ahora, ¿cómo generar archivos estáticos?
Notamos que el mismo contenido que mencionamos antes.我们可以将改造前的 default.asp 、 listthread.asp 等拷贝一个副本 , 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 取名为 、 、 listthread_2.asp , 且在同一个目录中(理论上 listthtrad.asp? Subid = 123 同 listthread_d.asp? Los resultados de acceso de Subid = 123 serán el mismo contenido), de modo que en la lógica de la necesidad de generar archivos estáticos, llamamos a la copia antes de la modificación de la solicitud de acceso web, obtenemos el código HTML y la almacenamos como un archivo estático. Esta solicitud web es realmente equivalente a antes de que cualquier visor real acceda a contenido estático, el servidor en sí es inspeccionado por el HTML que se emitirá y luego devuelve este código para almacenar la función de operación del archivo como un archivo estático. De esta manera, el archivo de caché se creó antes del espectador real.
Tal esquema casi no toca el diseño original, y difícilmente causará errores como 404 debido a la transformación. En segundo lugar, los archivos estáticos también ayudarán a que su sitio sea fácilmente incluido por motores de búsqueda como Google. ¿Por qué no?
Finalmente, recuerde que a través del acceso web, en el entorno de programación ASP, muchas personas usan componentes XMLHTTP para acceder, lo que causará muchos problemas. El recurso que XMLHTTP en sí mismo almacenará en caché las solicitudes, lo que resulta en el contenido obtenido por nuestras solicitudes a través de este componente, causando confusión lógica. Por lo tanto, debe elegir objetos HTTP del servidor XML o componentes WinHTTP para implementar recursos de solicitud web.
El uso de la tecnología de caché en ASP puede mejorar en gran medida el rendimiento de su sitio web.
Antes de introducir estas tecnologías, expliquemos cuál es la tecnología de caché de ASP.
El Cache de SO en realidad está abriendo un espacio para guardar datos en la memoria. Una vez que realiza una acción de consulta y coloca los resultados de la consulta en el caché, puede visitar rápidamente los datos rápidamente. Y si no coloca los datos en el caché, cuando vuelve a ejecutar esta consulta, el servidor consume el proceso de la base de datos y lo ordenó.
Cuando los datos se almacenan en el caché, el tiempo que lleva cuando se consulta nuevamente es principalmente al momento de mostrar los datos.
En otras palabras, no debemos poner los datos que a menudo deben cambiar en el caché del servidor.
Ahora primero discutimos la técnica de usar ASP en el servidor.
Tecnología de caché.
Cuando tenga muchos datos (estáticos, es decir, menos cambios) es necesario mostrar al cliente, puede considerar usar la tecnología de caché en el servidor. Esta tecnología es particularmente adecuada para aquellos sitios web con una fuerte consistencia de estilo de visualización (HUH, para sitios web no mayores, no es fácil de usar).
De hecho, el método de implementación es particularmente simple.
Este es un ejemplo para mostrar la clasificación de libros
Archivo displaybooks.asp:
< %@ Idioma = javas
CRIPT %>
<html>
<Body>
<Método de formulario = post>
Clasificación de libros;
<p>
<input type = enviar>
< %
Función getBookSlistBox () ()
{{
BooksListBox = Aplicación (BooksListBox)
if (BooksListBox! = NULL) return BooksListBox;
CRLF = String.FromCharCode (13, 10)
BooksListBox = <Seleccionar nombre = libros> + CRLF;
Sql = seleccionar * de los libros orden por nombre;
cnnbooks = server.createObject (ADODB.Connection);
cnnbooks.open (libros, administrador);
rstbooks = cnnbooks.execute (SQL);
FldbookName = rstbooks (BookName);
While (! Rstbooks.eof) {
BooksListBox = BooksListBox + <pection> +
FldBookName + + CRLF;
rstbooks.movenext ();
}
BooksListBox = BooksListBox +
Aplicación (BooksListBox) = BooksListBox
Devolver bookslistbox;
}
%>
Es muy simple, de hecho, utiliza una tecnología de aplicación muy simple, y la diferencia está en una oración:
Aplicación (BooksListBox) = BooksListBox
Puede verificar que encuentre que el número de solicitudes en el servidor se reducirá mucho. Esta situación es particularmente adecuada para sitios web que no son muy frecuentes ya que esas actualizaciones, como se actualizan solo una vez (o mucho tiempo).
Discutamos una tecnología de caché de cliente. Esta tecnología se utiliza principalmente para guardar información personal del usuario, como contraseñas de usuarios, códigos de código, etc. Utiliza principalmente algunos atributos de ADO. Al mismo tiempo, algunos internautas han mencionado si las preguntas que pueden usar objetos ADO en aplicaciones. La explicación no es clara, deje que el código hable a continuación:
Archivo global.asa:
<!
Archivos/System/ADO/Msado15.Dll->
<Script Language = VBScript runat = Server>
Sub Application_onStart
SQL = Seleccionar nombre de usuario, contraseña de UserInfo
cnnusers = dsn = usuario
Establecer rsusers = server.createObject (ADODB.RecordSet)
'Tenga en cuenta que las siguientes dos oraciones se utilizan para lograr la tecnología ADO que está disponible para desconectar conexiones
RscsomomomersorSorlocation = aduseclient
rscosomers.open SQL, CNNAdVWorks, Adoptatic, AdlockReadonly
'Romper la conexión de registro y la base de datos
rscosomers.activeconnection = nada
Establecer la aplicación (RSCustomers) = RScustomers
Final
Archivo ussers.asp
< %
'El método clon hace que cada usuario tenga una colección de récordsset
Establecer su aplicación = aplicación (RSUSERS) .Clone
Establecer nombre de usuario = yourusers (nombre de usuario)
Establecer contraseña = YourUsers (contraseña)
Unir a sus dueños.
%>
Nombre de usuario: < % = nombre de usuario %> Contraseña de usuario: < % = contraseña %>
< %
Yourusers.movenext
Bucle
%>