這裡介紹ASP利用Application來實現緩存功能,用來提高頁面的打開速度的一種方法,具體代碼如下:
01
<%
02
function refreshrecords()
03
Dim
sql, conn, rs
04
sql =
"select top 10 * FROM Dv_Topic order by DateAndTime desc"
05
Set
conn = Server.CreateObject(
"ADODB.Connection"
)
06
conn.Open
"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="
&server.mappath(
"dv.mdb"
)
07
Set
rs = Server.CreateObject(
"ADODB.Recordset"
)
08
rs.Open sql,conn, 1, 1
09
10
If
Not
rs.EOF
Then
11
Dim
temp
12
temp=
"<ul>"
13
for i=1 to 10
14
temp = temp&
"<li><a href="
"http://www.aspbc.com/dispbbs.ASP?boardID="
&rs(
"Boardid"
)&
"&ID="
&rs(
"topicid"
)&
"&page=1"
">"
&rs(
"Title"
)&
"("
&rs(
"PostUserName"
)&
")</a></li>"
15
''這個地方各有所好了,顯然和一個用table,td,tr,tbody來寫前台的人合作,是一件很痛苦的事情.
16
rs.MoveNext
17
i=i+1
18
next
19
temp = temp &
"</ul>"
20
refreshrecords = temp
21
Else
22
refreshrecords =
"數據調用失敗."
23
End
If
24
rs.Close
25
conn.Close
26
Set
rs =
Nothing
27
Set
conn =
Nothing
28
End
Function
29
30
31
''下面的function則是用來更新緩存的
32
33
function displayrecords(secs)
34
if Application(
"cache"
)=
""
or isempty(Application(
"cache"
)) then
'''' 程序第一次運行時候更新緩存
35
''''application("cache")用來保存我們需要緩存在內存中的內容
36
''''application("cache_time")用來保留緩存上次更新的時間
37
''''我們只在兩種情況下是需要調用refresh函數來訪問數據庫來更新緩存
38
''''第一種就是服務器重啟 或者其他意外導致application存儲的值丟失
39
Application.Lock
40
Application(
"cache_date"
)=now()
41
''更新緩存時間
42
Application(
"cache"
) = refreshrecords()
43
''更新緩存內容
44
''codeby niceidea 簽名
45
Application.UnLock
46
end if
47
48
if DateDiff(
"s"
, Application(
"cache_date"
),Now)> secs then
''比較上次更新時間與當前時間的差值
49
''''另外一種需要更新緩存的情況就是緩存到期 所謂緩存就是保留一定時間的數據 定期更新恐怕是最常見的
50
Application.Lock
51
Application(
"cache_date"
)=now()
52
Application(
"cache"
) = refreshrecords()
53
Application.UnLock
54
end if
55
Response.Write Application(
"cache"
)
56
End
Function
57
%>
(鼠標移到代碼上去,在代碼的頂部會出現四個圖標,第一個是查看源代碼,第二個是復制代碼,第三個是打印代碼,第四個是幫助)
最後 調用的方法是:
1
<%
Call
displayrecords(300) %>
(鼠標移到代碼上去,在代碼的頂部會出現四個圖標,第一個是查看源代碼,第二個是復制代碼,第三個是打印代碼,第四個是幫助)