简单的说使用Cache基本原理是,把经常需要且获得代价昂贵的数据在内存中持续保存一定时间,以供这些数据可以被直接地全局地访问。例如,有一些数据需要从数据库多个表中查询获得,且几乎每个页面都要调用这些数据。
以下代码程序实现ASP定时刷新Cache,也就是说给Application中储存的设一个过期时间。
以下为引用的内容: 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> |
以下为引用的内容: 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 %> |
以下为引用的内容: 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" %> |
|