ASP中CACHE技术

2018-09-06 10:22

阅读:769

  我认为在ASP中最好的办法是用编程实现定时刷新Cache,也就是说给Application中储存的设一个过期时间。当然,在ASP中Application对象没有这样一个ExpireTime属性。这需要用程序实现。

   Code ASP:default.asp

<%@Language=VBScript%>
<%Option Explicit%>
<%Response.Buffer=True%>
<!--#include file = conn.asp-->
<!--#include file = GetCache.asp-->
<HTML>
<HEAD>
<TITLE>ASP Cache演示</TITLE>
<META HTTP-EQUIV=Content-Type CONTENT=text/html; charset=gb2312>
</HEAD>
<BODY>
<h4>每隔10秒刷新Cache:</h4>
<%
response.Flush
GetHTMLStream
response.Write
HTMLStream
%>
</body>
</html>

   ASP:getcache.asp

<%
Const CACHE_DEFAULT_INTERVAL = 30 每隔30秒刷新一次cache
Dim HTMLStream
Dim IsExpires
IsExpires = CacheExpires
Function CacheExpires
Dim strLastUpdate
Dim result strLastUpdate = Application(LastUpdate)
If (strLastUpdate = ) Or (CACHE_DEFAULT_INTERVAL < DateDiff(s, strLastUpdate, Now)) Then
result = true
SetLastUpdateTime
Else
result = false
End If
CacheExpires = result
End Function

Sub SetLastUpdateTime
Application.Lock
Application(LastUpdate) = CStr(now())
Application.UnLock
End Sub

Sub GetHTMLStream
If IsExpires Then
UpdateHTMLStream
End If
HTMLStream=Application(CACHE_HTMLStream)
End Sub

Sub UpdateHTMLStream
dim d
d = FetchHTMLStream
Application.Lock
Application(CACHE_HTMLStream) = d
Application.UnLock
End Sub

Function FetchHTMLStream
Dim rs ,strSQL, strHTML
Set rs = CreateObject(ADODB.Recordset)
strSQL = select categoryID , categoryname from categories
rs.Open strSQL, strConn,adOpenForwardOnly,adLockReadOnly
strHTML = strHTML <select name=slt_search>
while (not rs.EOF)
strHTML = strHTML <option>
strHTML = strHTML rs.Fields(categoryname)
strHTML = strHTML </option> rs.MoveNext
wend
strHTML = strHTML </select>
rs.Close
Set rs = Nothing
FetchHTMLStream = strHTML
End Function
%>

   ASP:conn.asp

<!--METADATA NAME=Microsoft ActiveX Data Objects 2.5 Library TYPE=TypeLib UUID={00000205-0000-0010-8000-00AA006D2EA4}-->
<%
dim strConn
strConn = Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind
%>


评论


亲,登录后才可以留言!