這是ASP緩存的其中一種方法:利用application對象實現的。以前還介紹了一種文件緩存的方法:ASP文件緩存技術原理
下面介紹這種方法:
01
<%
02
''下面的function用來從動網論壇數據庫中提出數據更新緩存 很簡單的 提出最新發表的十個帖子
03
function refreshrecords()
04
Dim sql, conn, rs
05
sql = "select top 10 * FROM Dv_Topic order by DateAndTime desc"
06
Set conn = Server.CreateObject("ADODB.Connection")
07
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&server.mappath("dv.mdb")
08
Set rs = Server.CreateObject("ADODB.Recordset")
09
rs.Open sql,conn, 1, 1
10
11
If Not rs.EOF Then
12
Dim temp
13
temp="<ul>"
14
for i=1 to 10
15
temp = temp&"<li><a href=""http:*/bbs.sfte.Net/dispbbs.ASP?
16
boardID="&rs("Boardid")&"&ID="&rs
17
("topicid")&"&page=1"">"&rs("Title")&"("&rs("PostUserName")
18
&")</a></li>"
19
''這個地方各有所好了,顯然和一個用table,td,tr,tbody來寫前台的人合作,是一件很痛苦的事情.
20
rs.MoveNext
21
i=i+1
22
next
23
temp = temp & "</ul>"
24
refreshrecords = temp
25
Else
26
refreshrecords = "數據調用失敗."
27
End If
28
rs.Close
29
conn.Close
30
Set rs = Nothing
31
Set conn = Nothing
32
End Function
33
34
35
''下面的function則是用來更新緩存的
36
37
function displayrecords(secs)
38
39
if Application("cache")="" or isempty(Application("cache")) then '''' 程序第一次運行時候更新緩存
40
''''application("cache")用來保存我們需要緩存在內存中的內容
41
''''application("cache_time")用來保留緩存上次更新的時間
42
''''我們只在兩種情況下是需要調用refresh函數來訪問數據庫來更新緩存
43
''''第一種就是服務器重啟 或者其他意外導致application存儲的值丟失
44
Application.Lock
45
Application("cache_date")=now()
46
''更新緩存時間
47
Application("cache") = refreshrecords()
48
''更新緩存內容
49
''codeby niceidea 簽名
50
Application.UnLock
51
end if
52
53
if DateDiff("s", Application("cache_date"),Now)> secs then ''比較上次更新時間與當前時間的差值
54
''''另外一種需要更新緩存的情況就是緩存到期 所謂緩存就是保留一定時間的數據 定期更新恐怕是最常見的
55
Application.Lock
56
Application("cache_date")=now()
57
Application("cache") = refreshrecords()
58
Application.UnLock
59
end if
60
Response.Write Application("cache")
61
End Function
62
%>
63
64
最後 調用的方法是
65
<%displayrecords(300)%>
66
300表示5分鐘更新一次 60×5=300!