asp利用Application来实现缓存功能

这里介绍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分钟更新一次

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Grow your business fast with

Suku