这里介绍asp利用Application来实现缓存功能,用来提高页面的打开速度的一种方法,具体代码如下: view sourceprint?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="& amp;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 %>
最后 调用的方法是:
view sourceprint?1 <% Call displayrecords(300) %>
300 = 5 × 60秒,表示5分钟更新一次
发表回复