Han pasado 7 años desde que se lanzó ASP y el uso de la tecnología ASP se ha vuelto bastante maduro. Desde que Microsoft lanzó ASP.NET, gradualmente ha dejado de actualizar la versión ASP. Pero como muchas personas todavía están acostumbradas a usar ASP para desarrollar sitios web, una vez más usaré un ejemplo simple para ilustrar cómo usar Cache en ASP.
En pocas palabras, el principio básico del uso de la caché es almacenar en la memoria los datos costosos y que se necesitan con frecuencia durante un cierto período de tiempo para que se pueda acceder a estos datos directa y globalmente. Por ejemplo, hay algunos datos que deben consultarse desde varias tablas en la base de datos, y casi todas las páginas deben llamar a estos datos. La mejor implementación en este caso es almacenar en caché esta parte de los datos. Una implementación simple en ASP es encapsular la forma de expresión final de estos datos (como una secuencia HTML) en una cadena y luego almacenarla en el objeto integrado de ASP. Aplicación (en este artículo se analiza principalmente la caché dinámica y se omitirán las aplicaciones ASP simples). La ventaja de esto es que este HTML se puede llamar globalmente en todo el sitio web y la aplicación se almacena en la memoria, por lo que no es necesario consultar la base de datos, lo que acelera el tiempo de respuesta y ahorra carga del servidor. Por supuesto, esto se produce a expensas del consumo de memoria y es un ejemplo típico de intercambio de espacio por tiempo.
Aunque el uso de este método tiene muchos beneficios, cuando se encuentran fuentes de datos (bases de datos) que cambian con frecuencia, es posible que este método ya no sea aplicable, porque el objeto Aplicación ASP tiene una desventaja, es decir, no puede cambiar automáticamente con los cambios en la fuente de datos. cambiar o controlar el intervalo de actualización. Por lo tanto, los desarrolladores necesitan programar para implementar la caché dinámica. Por supuesto, durante el diseño del programa, la Aplicación se puede actualizar cada vez que se cambia la fuente de datos (base de datos). Por tanto, la fuente de datos (base de datos) es siempre coherente. Habrá más cuestiones a considerar en la programación y es fácil pasar por alto detalles. Por eso no recomiendo este método excepto en situaciones específicas.
Creo que la mejor manera en ASP es utilizar la programación para actualizar periódicamente la caché, lo que significa establecer un tiempo de caducidad para los datos almacenados en la aplicación. Por supuesto, el objeto Aplicación en ASP no tiene dicho atributo ExpireTime. Esto debe implementarse programáticamente.
Código
ASP: predeterminado.asp
< %@Language=VBScript% >
<%Opción explícita%>
<%Response.Buffer=Verdadero%>
<!--#include file = "conn.asp"-->
<!--#include archivo = "GetCache.asp"-->
<HTML>
<CABEZA>
<TITLE>Demostración de caché ASP</TITLE>
<META HTTP-EQUIV="Tipo de contenido" CONTENT="text/html; charset=gb2312">
</CABEZA>
<CUERPO>
<h4>Actualizar caché cada 10 segundos:</h4>
<%
respuesta.Flush
ObtenerHTMLStream
respuesta.Escribir
HTMLStream
%>
</cuerpo>
</html>
ASP: getcache.asp
<%
Const CACHE_DEFAULT_INTERVAL = 30 'Actualizar caché cada 30 segundos
HTMLStream tenue
DimIsExpires
IsExpires = CachéExpires
FunciónCacheExpira
Dim strÚltimaActualización
Resultado oscuro strLastUpdate = Aplicación ("LastUpdate")
Si (strLastUpdate = "") O (CACHE_DEFAULT_INTERVAL < DateDiff("s", strLastUpdate, Now)) Entonces
resultado = verdadero
Establecer última hora de actualización
Demás
resultado = falso
Terminar si
CacheExpires = resultado
de función
finalLastUpdateTime
Bloqueo de aplicación
Aplicación("Última actualización") = CStr(ahora())
Aplicación.Desbloquear
Fin Sub
Sub GetHTMLStream
Si expira entonces
ActualizarHTMLStream
Terminar si
HTMLStream=Aplicación("CACHE_HTMLStream")
Fin Sub
Sub ActualizaciónHTMLStream
tenue d
d = FetchHTMLStream
Bloqueo de aplicación
Aplicación("CACHE_HTMLStream") = d
Aplicación.Desbloquear
Fin de
la subfunción FetchHTMLStream
Dim rs, strSQL, strHTML
Establecer rs = CreateObject("ADODB.Recordset")
strSQL = "seleccione ID de categoría, nombre de categoría de categorías"
rs.Abrir strSQL, strConn,adOpenForwardOnly,adLockReadOnly
strHTML = strHTML & "<seleccionar nombre=""slt_search"">"
mientras (no rs.EOF)
strHTML = strHTML & "<opción>"
strHTML = strHTML & rs.Fields("nombre de categoría")
strHTML = strHTML & "</option>" rs.MoveNext
encaminarse a
strHTML = strHTML & "</select>"
rs.Cerrar
Configurar=Nada
FetchHTMLStream = strHTML
Función final
%>
ASP: conn.asp
<!--METADATA NAME="Biblioteca de Microsoft ActiveX Data Objects 2.5" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
<%
tenue strConn
strConn = "Proveedor=SQLOLEDB.1;Seguridad integrada=SSPI;Información de seguridad persistente=False;Catálogo inicial=Northwind"
%>