這是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!