Já se passaram 7 anos desde que o ASP foi lançado e o uso da tecnologia ASP tornou-se bastante maduro. Desde que a Microsoft lançou o ASP.NET, ela parou gradualmente de atualizar a versão ASP. Mas como muitas pessoas ainda estão acostumadas a utilizar ASP para desenvolver sites, mais uma vez utilizarei um exemplo simples para ilustrar como utilizar Cache em ASP.
Simplificando, o princípio básico do uso do cache é armazenar dados caros e frequentemente necessários na memória por um determinado período de tempo, para que esses dados possam ser acessados direta e globalmente. Por exemplo, há alguns dados que precisam ser consultados em várias tabelas no banco de dados e quase todas as páginas precisam chamar esses dados. A melhor implementação neste caso é armazenar em cache esta parte dos dados. Uma implementação simples em ASP é encapsular a forma de expressão final desses dados (como o fluxo HTML) em uma string e então armazená-la no objeto interno do ASP. Aplicativo (este artigo discute principalmente o cache dinâmico, e aplicativos ASP simples serão omitidos). A vantagem disso é que esse HTML pode ser chamado globalmente em todo o site, e a Aplicação fica armazenada na memória, não havendo necessidade de consultar o banco de dados, agilizando o tempo de resposta e economizando carga do servidor. É claro que isso prejudica o consumo de memória e é um exemplo típico de troca de espaço por tempo.
Embora haja muitos benefícios em usar este método, ao encontrar fontes de dados (bancos de dados) que mudam frequentemente, este método pode não ser mais aplicável, porque o objeto Aplicativo ASP tem uma desvantagem, ou seja, ele não pode mudar automaticamente com mudanças na fonte de dados . alterar ou controlar o intervalo de atualização. Portanto, os desenvolvedores precisam programar para implementar o Cache dinâmico. É claro que, durante o design do programa, o Aplicativo pode ser atualizado sempre que a fonte de dados (banco de dados) for alterada. Assim a fonte de dados (banco de dados) é sempre consistente. Haverá mais questões a serem consideradas na programação e é fácil perder detalhes. Portanto, não recomendo este método, exceto em situações específicas.
Acho que a melhor maneira no ASP é usar a programação para atualizar regularmente o Cache, o que significa definir um prazo de validade para os dados armazenados no Aplicativo. Obviamente, o objeto Application em ASP não possui esse atributo ExpireTime. Isto precisa ser implementado programaticamente.
Código
ASP: default.asp
< %@Language=VBScript% >
<%Opção Explícita%>
<%Response.Buffer=True%>
<!--#include arquivo = "conn.asp"-->
<!--#include arquivo = "GetCache.asp"-->
<HTML>
<CABEÇA>
<TITLE>Demonstração de Cache ASP</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
</HEAD>
<CORPO>
<h4>Atualizar cache a cada 10 segundos:</h4>
<%
resposta.Flush
GetHTMLStream
resposta.Escrever
HTMLStream
%>
</body>
</html>
ASP: getcache.asp
<%
Const CACHE_DEFAULT_INTERVAL = 30 'Atualiza cache a cada 30 segundos
Escurecer HTMLStream
DimIsExpira
IsExpires = CacheExpires
FunçãoCacheExpires
Dim strLastUpdate
Dim resultado strLastUpdate = Application("LastUpdate")
Se (strLastUpdate = "") Ou (CACHE_DEFAULT_INTERVAL < DateDiff("s", strLastUpdate, Now)) Então
resultado = verdadeiro
DefinirLastUpdateTime
Outro
resultado = falso
Terminar se
CacheExpires = resultado
Função final
Sub SetLastUpdateTime
Aplicativo.Lock
Aplicativo("ÚltimaAtualização") = CStr(agora())
Aplicativo.UnLock
End Sub
Sub GetHTMLStream
Se IsExpira então
AtualizarHTMLStream
Terminar se
HTMLStream=Aplicativo("CACHE_HTMLStream")
Fim Sub
Sub AtualizaçãoHTMLStream
escurecer
d = FetchHTMLStream
Aplicativo.Lock
Aplicativo("CACHE_HTMLStream") = d
Aplicativo.UnLock
Finalizar subfunção
FetchHTMLStream
Dim rs, strSQL, strHTML
Definir rs = CreateObject("ADODB.Recordset")
strSQL = "selecione ID da categoria, nome da categoria nas categorias"
rs.Open strSQL, strConn,adOpenForwardOnly,adLockReadOnly
strHTML = strHTML & "<select name=""slt_search"">"
enquanto (não rs.EOF)
strHTML = strHTML & "<opção>"
strHTML = strHTML & rs.Fields("nomedacategoria")
strHTML = strHTML & "</option>" rs.MoveNext
vamos
strHTML = strHTML & "</select>"
rs.Fechar
Setrs=Nada
FetchHTMLStream = strHTML
Função final
%>
ASP: conn.asp
<!--METADATA NAME="Biblioteca Microsoft ActiveX Data Objects 2.5" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
<%
dim strConn
strConn = "Provider=SQLOLEDB.1;Segurança Integrada=SSPI;Persistir Informações de Segurança=Falso;Catálogo Inicial=Northwind"
%>