1. ¿Qué es el almacenamiento en caché ASP y por qué debería almacenarse en caché? Cuando su sitio web se establece inicialmente utilizando tecnología ASP, puede sentir la conveniencia que brinda la tecnología de páginas web dinámicas ASP, así como la libertad de modificación y el control http gratuito. Sin embargo, a medida que aumenta el número de visitas, definitivamente encontrará que la velocidad de acceso a su sitio es cada vez más lenta y que IIS se reinicia cada vez con más frecuencia. A continuación, debe querer optimizar ASP, como reemplazar la base de datos con un mejor rendimiento, crear índices, escribir procedimientos almacenados, etc. Algunas de estas medidas no requieren una mayor presión de costos, mientras que otras requieren una presión de costos significativa (como el acceso en clústeres a SQL), y el efecto no es necesariamente seguro.
Ante la presión del acceso a la web, creo que la forma más económica es utilizar la tecnología de optimización de caché para aliviar la presión del servicio web.
El aumento del tráfico web a menudo significa un rápido crecimiento de la demanda de los siguientes recursos:
1. El aumento del tráfico de la tarjeta de red requiere más CPU para procesar el tráfico de la red y los subprocesos de E/S de la red.
2. La necesidad de abrir/cerrar conexiones de bases de datos con mayor frecuencia (si se utiliza tecnología de bases de datos; generalmente ASP usa bases de datos como almacenamiento de datos), la cantidad de cosas que consumen recursos seriamente y los bloqueos causados por transacciones que compiten por los recursos aumentarán la red I/ O O consumo de CPU.
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, lo que provocará intercambios frecuentes entre la memoria física y la memoria auxiliar, lo que provocará que la ejecución del código se detenga y se bloquee la respuesta web. .
4. Debido a la falta de respuesta oportuna al acceso, provocará fallas en el acceso a la página web, lo que provocará que los usuarios actualicen, exacerbando así la demanda de recursos como CPU y memoria.
De hecho, considerando las aplicaciones web comunes, muchas veces la ejecución dinámica de código es innecesaria.
2. La clasificación del caché ASP se puede resumir sin autorización. El caché ASP se puede dividir en dos categorías:
1. Almacenamiento en caché de archivos El llamado almacenamiento en caché de archivos se basa en un juicio lógico de que la ejecución específica de un determinado ASP no cambiará significativamente en un período de tiempo, por lo que el contenido se almacena en forma de HTML estático y luego. La tecnología de redirección web se utiliza para permitir a los clientes el acceso de un extremo a otro a archivos estáticos para reducir la necesidad de CPU, recursos de bases de datos, etc. Existen muchas aplicaciones de este tipo. Por ejemplo, muchos foros regeneran la publicación completa en un archivo estático al responder a una publicación y luego la redirigen, como el foro donews.com. También existe un efecto secundario (beneficio) de ser estático: los motores de búsqueda como Google pueden indexarlo fácilmente. Algunos de los llamados sistemas de comunicados de prensa han adoptado esta tecnología.
2. Almacenamiento en caché de fragmentos de archivos El llamado almacenamiento en caché de archivos también se basa en un juicio lógico. Una determinada parte de los datos (generalmente obtenidos consultando una base de datos de gran capacidad que consume recursos) no cambiará en un determinado período de tiempo. Podemos almacenar estos datos en forma de archivos. Cuando sea necesario, los datos se pueden obtener leyendo archivos para evitar aumentar la carga de la base de datos. Por ejemplo, normalmente almacenamos algunos datos en formato XML y luego usamos Así es como se maneja el foro CSDN.
3. Caché de la memoria principal Además, también puede considerar el almacenamiento en caché en la memoria, almacenando contenido que requiere una respuesta oportuna en la memoria y, una vez que se requiere acceso, se transferirá inmediatamente desde el almacenamiento rápido. Si una gran cantidad de requisitos de acceso se concentran en unas pocas páginas pequeñas o si la memoria principal es lo suficientemente grande, creo que el uso del almacenamiento en caché de la memoria principal definitivamente puede mejorar en gran medida el rendimiento del acceso web.
3. Cómo implementar/usar el caché Para implementar el caché, debe considerar los siguientes problemas:
1. ¿Qué páginas no cambiarán en un corto período de tiempo?
Analice su propio sitio, existen muchas páginas de este tipo. Por ejemplo, un sitio web suele tener columnas de noticias e información. Estas columnas suelen ser publicadas por los mantenedores del sitio a una hora determinada del día, y las páginas rara vez se modifican después de esa hora. Entonces estas páginas son adecuadas para el almacenamiento en caché de archivos estáticos. De hecho, esto es lo que hace el llamado sistema de lanzamiento de noticias, por lo que también puede consultar las ideas de estos sistemas para transformar sus páginas ASP dinámicas originales.
2. Esas páginas se generan usando la misma lógica para todos los visitantes (es decir, los visitantes no se distinguen).
Además de columnas como noticias e información donde todos los visitantes ven la misma interfaz, las aplicaciones que consumen recursos, como los foros, generalmente se pueden diseñar para generar una lógica unificada (la misma publicación será vista igual por tres personas y tres personas). En dichas páginas de aplicaciones, también esto se puede lograr mediante el almacenamiento en caché estático. También puede considerar fragmentar los datos y utilizar tecnología de secuencias de comandos para procesarlos más allá de las capacidades de procesamiento del servidor, es decir, el navegador del cliente.
3. Los costos y beneficios del uso del almacenamiento en caché.
Lo principal es "espacio para el tiempo (de respuesta)". Utilice la tecnología de almacenamiento en caché para preprocesar el contenido que se necesitará con frecuencia en el futuro para mejorar la capacidad de respuesta del servidor web y, lo que es más importante, ganarse el favor de los visitantes.
El precio es que la demanda de espacio web aumenta y, al mismo tiempo, el efecto de acceso puede verse afectado.
Pero creo que el almacenamiento en caché adecuado tiene más ventajas que desventajas.
4. Esos lugares no son adecuados para almacenar en caché páginas de consultas dinámicas. El contenido de la consulta de cada uno es diferente, por lo que los resultados de visualización son diferentes y es imposible almacenar en caché los resultados de la consulta. Por lo tanto, el almacenamiento en caché es más complicado y la tasa de utilización de la caché es baja. causando problemas de administración El costo es alto (suponiendo que almacene en caché 1000 palabras clave de consulta, administrar la correspondencia entre estas palabras clave y el caché también es problemático).
4. Análisis de ejemplo Supongamos que el diseño original de un foro de sugerencias es el siguiente:
En el directorio raíz:
Página de inicio default.asp, generalmente aspectos destacados, recomendaciones, etc.
listBorad.asp Este archivo enumera los nombres y las introducciones de todas las columnas. Si lleva el parámetro MainBID, significa que se enumerarán las columnas de la sección.
listThread.asp Si este archivo no lleva ningún parámetro, significa enumerar todas las publicaciones, y si lleva MainBID, significa enumerar todas las publicaciones en un bloque determinado. Si se lleva subBID, significa enumerar publicaciones en columnas específicas. Si se lleva el parámetro de página, los temas se enumeran en páginas.
ViewThread.asp enumera el contenido de una publicación. Asumimos que la publicación se muestra como un comentario y que todos los comentarios aparecen al final. El parámetro ID es la publicación que se mostrará.
Reply.asp responde a una publicación determinada y lleva el parámetro Id para responder a una publicación determinada. El resto no se discutirá por el momento.
De lo anterior, podemos ver que si todo se hace usando ASP/PHP original, entonces la ejecución de casi todos los archivos ASP requiere operaciones de base de datos, consultas frecuentes y consultas de varias tablas. Debe saber que consultar la base de datos eventualmente conducirá a una disminución en el rendimiento y la velocidad de respuesta, lo que afectará la lentitud de la navegación de los visitantes y no favorece la calidad de la web. Lo que es más importante es que para dos personas, A y B, si acceden a ViewThread.asp y similares, si el ID es el mismo, muchas veces verán el mismo contenido (el código HTML recibido por sus navegadores es casi el mismo). igual), pero para este "Mismo contenido", el servidor necesita abrir conexiones de bases de datos, consultas, leer registros, mostrar, cerrar registros y conexiones de bases de datos. . . . Si más personas acceden a las siguientes operaciones que consumen recursos del servidor, el resultado final será que estas personas consumirán más recursos del servidor. De hecho, estos esfuerzos repetidos por el "mismo contenido" se pueden evitar utilizando tecnología de almacenamiento en caché para la optimización. Por ejemplo:
Después de enviar el contenido en respuesta.asp, inmediatamente llamamos a la función estática y almacenamos todo el contenido de la publicación como un archivo html estático como viewThread_xxxx.htm. En circunstancias normales, al acceder a viewThread.asp?ID=xxxx, el sistema redirige automáticamente. al archivo estático correspondiente viewThreadxxxx.htm. De esta manera, cuando una publicación no tiene la última versión, siempre será contenido estático proporcionado a los espectadores; una vez que haya un nuevo envío, se actualizará al archivo estático. De esta manera, se guardarán muchas operaciones de la base de datos. y la velocidad de respuesta mejorará enormemente.
listBorad.asp también se puede implementar estáticamente. Podemos analizar los parámetros que puede contener, establecer el nombre del archivo de caché en listBoard_xx.htm y actualizar listBoard_xxx.htm al agregar nuevas columnas. listThread.asp es similar, excepto que debido a que tiene más parámetros, habrá muchos archivos de caché. Si desea almacenar en caché listThread.asp? subBID=xxx&page=2, entonces el archivo estático correspondiente es listThread_xxx_p2.htm. Lo mismo ocurre con default.asp.
Entonces, ¿cómo se sabe cuándo actualizar? ¿Cuándo se actualizará?
Al analizar listThread.asp? subBID = xxx&page = 2, extraemos el subID y la página al ejecutar listThread.asp, y luego detectamos si listThread_xxx_p2.htm existe. Si no existe, llamamos a la función de generación estática para generar el archivo y finalmente redirigimos. aquí archivos estáticos. Tenga en cuenta que la ausencia aquí significa que hay contenido nuevo que debe actualizarse.
Entonces, ¿cómo hacer que el archivo no exista? borrar. Cuando publicamos una nueva publicación, eliminamos una publicación o movemos una publicación, podemos eliminar todos los archivos estáticos como listThread_xxx_p2.htm. Esto le indica cuándo almacenar en caché.
Ahora queda una pregunta, ¿cómo generar archivos estáticos?
Observamos que el "mismo contenido" que mencionamos antes. Podemos hacer una copia de default.asp, listThread.asp, etc. antes de la transformación, llamada default_d.asp, listThread_2.asp, y en el mismo directorio (teóricamente listThtrad.asp?subID=123 es lo mismo que LISTtHREAD_D.ASP El resultado del acceso de SUBID = 123 será el mismo contenido), por lo que en la lógica que necesita generar archivos estáticos, llamamos a la copia antes de la transformación a través de una solicitud de acceso WEB, obtenemos el código html y lo almacenamos como un archivo estático. Esta solicitud web es en realidad equivalente a que el propio servidor vea el HTML que se generará antes de que cualquier navegador real acceda al contenido estático, y luego devuelva estos códigos y los almacene como archivos estáticos utilizando la función de operación de archivos. De esta manera, el archivo de caché se crea antes que el espectador real.
Una solución de este tipo difícilmente alterará el diseño original y casi nunca provocará errores como 404 debido a modificaciones. En segundo lugar, los archivos estáticos también ayudarán a que los motores de búsqueda como Google indexen fácilmente su sitio. ¿Por qué no?
Finalmente, un recordatorio, a través del acceso web, en el entorno de programación ASP, muchas personas usan el componente xmlHTTP para acceder, lo que causará muchos problemas. El propio xmlhttp almacenará en caché los recursos solicitados, lo que provocará que el contenido que solicitamos a través de este componente no sea el más reciente, lo que provocará una confusión lógica. Por lo tanto, debe elegir el objeto http del servidor xml o el componente winhttp para implementar los recursos de solicitud web.
El uso de la tecnología de almacenamiento en caché en ASP puede mejorar en gran medida el rendimiento de su sitio web. De hecho, estos métodos de implementación son muy simples. Explicará cómo funciona el almacenamiento en caché en el servidor y cómo puede utilizar un método llamado tecnología de conexión ADO.
Antes de presentar estas tecnologías, expliquemos qué es exactamente la tecnología de almacenamiento en caché ASP.
El llamado caché en realidad sirve para abrir un espacio en la memoria para guardar datos. Al usar el caché, no necesita acceder con frecuencia a los datos que guarda en el disco duro. Al usar el caché de manera flexible, puede evitarlo. la angustia de ver cómo se llena el pobre disco duro. Me tortura leer datos. Una vez que ejecuta una consulta y coloca los resultados de la consulta en el caché, puede acceder rápidamente a los datos repetidamente. Y si no coloca los datos en el caché, cuando ejecute la consulta nuevamente, el servidor dedicará el proceso a obtenerlos y ordenarlos de la base de datos.
Cuando los datos se almacenan en el caché, el tiempo dedicado a realizar la consulta nuevamente es principalmente el tiempo para mostrar los datos.
En otras palabras, no debemos colocar datos que deban cambiar con frecuencia en el caché del servidor. Deberíamos colocar datos que cambien menos pero a los que sea necesario acceder con frecuencia.
Ahora discutiremos cómo ASP usa la tecnología de almacenamiento en caché en el lado del servidor, y luego discutiremos cómo ASP usa la tecnología de almacenamiento en caché en el lado del cliente.
Cuando tiene una gran cantidad de datos (estáticos, es decir, menos cambiantes) que deben mostrarse al cliente, puede considerar el uso de tecnología de almacenamiento en caché del lado del servidor. Esta tecnología es especialmente adecuada para sitios web con una fuerte coherencia en el estilo de visualización (jaja, no es fácil de usar para sitios web no convencionales).
De hecho, el método de implementación es muy simple. Solo necesita mirar el ejemplo simple a continuación para comprenderlo.
Este es un programa de ejemplo para mostrar categorías de libros.
Archivo DisplayBooks.ASP:
< %@ IDIOMA=JavaS
guión % >
<html>
<cuerpo>
<método de formulario=publicación>
Clasificación de libros < %= getBooksListBox() % >
<p>
<tipo de entrada=enviar>
<%
función getBooksListBox()
{
LibrosListBox = Aplicación ("LibrosListBox")
si (LibrosListBox! = nulo) devuelve LibrosListBox;
crlf = Cadena.fromCharCode(13, 10)
BooksListBox = “<seleccionar nombre=Libros>” + crlf;
SQL = “Seleccionar * DE Libros ORDENAR POR Nombre”;
cnnBooks = Server.CreateObject("ADODB.Conexión");
cnnBooks.Open("Libros", "Administrador", "");
primeros libros = cnnBooks.Execute(SQL);
fldBookName = primeros libros ("Nombre del libro");
mientras (! primeros libros.EOF) {
LibrosListBox = LibrosListBox + “<opción>” +
fldNombreLibro + "" + crlf;
primeros libros.MoveNext();
}
LibrosListBox = LibrosListBox + ""
Aplicación("LibrosListBox") = LibrosListBox
devolver BooksListBox;
}
%>
Es muy simple, de hecho, utiliza una tecnología de aplicación muy simple y la diferencia es solo una frase:
Aplicación("LibrosListBox") = LibrosListBox
Puede verificarlo y encontrará que la cantidad de solicitudes en el servidor se reducirá mucho. Esta situación es especialmente adecuada para aquellos contenidos de sitios web que no se actualizan con mucha frecuencia, por ejemplo, solo lo actualizas una vez al día (o durante mucho tiempo).
A continuación, analizaremos una tecnología de almacenamiento en caché del lado del cliente. Esta tecnología también se llama tecnología de conexión ADO desconectada (el nivel de traducción es demasiado bajo, ¿por qué suena tan incómodo)? Esta tecnología se utiliza principalmente para guardar información personal de los usuarios, como contraseñas de usuario, nombres de códigos, etc. Utiliza principalmente algunas propiedades de ADO. Al mismo tiempo, también responde a la pregunta que han mencionado algunos internautas sobre si los objetos ADO se pueden utilizar en Applocation. La explicación no está clara, deja que el código hable por ti:
Archivo GLOBAL.ASA:
< !–METADATA TYPE=”TypeLib” FILE=”C:Program FilesCommon
Archivossystemadomsado15.dll”–>
< IDIOMA SCRIPT=VBScript RUNAT=”Servidor” >
Subaplicación_OnStart
SQL = "Seleccione nombre de usuario, contraseña DE Información de usuario"
cnnUsers = “DSN=Usuario”
Establecer rsUsers = Server.CreateObject("ADODB.Recordset")
'Tenga en cuenta que las dos oraciones siguientes se utilizan para implementar la tecnología ADO llamada desconexión disponible.
rsCustomers.CursorLocation = adUseClient
rsCustomers.Open SQL, cnnAdvWorks, adOpenStatic, AdLockReadOnly
' Desconectamos el RecordSet de la base de datos
rsCustomers.ActiveConnection = Nada
Establecer aplicación ("rsCustomers") = rsCustomers
Subtítulo final
Usuariosdearchivo.ASP
<%
'El método de clonación permite que cada usuario tenga su propia colección RecordSet
Establezca susUsuarios = Aplicación("rsUsers").Clonar
Establecer nombre de usuario = sus usuarios ("Nombre de usuario")
Establecer contraseña = susUsuarios ("Contraseña")
Hazlo hasta que tusUsuarios.EOF
%>
Nombre de usuario: < %= Nombre de usuario % > Contraseña de usuario: < %= Contraseña % >
<%
susUsuarios.MoverSiguiente
Bucle
%>