ASP利用缓存提高数据显示效率

发布时间:2019-08-08编辑:脚本学堂
ASP利用缓存提高数据显示效率

实现的原理: 读取数据写入变量,然后下次读取判断是否缓存,然后读取。
 

复制代码 代码如下:

<%      
Function DisplayRecords()      
    Dim sql, conn, rs      
    sql = "SELECT id, [szd_f], [szd_t] FROM admin"     
    Set conn = Server.CreateObject("ADODB.Connection")      
    conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("db.mdb")      
    Set rs = Server.CreateObject("ADODB.Recordset")      
    rs.Open sql, conn, 1, 3
    If Not rs.EOF Then     
      Dim temp      
      temp = "<table width=""90%"" align=""center"""     
      temp = temp & " border=""1""  bordercolor=""silver"""     
      temp = temp & " cellspacing=""2"" cellpadding=""0"">"     
      temp = temp & "<tr bgcolor=""#CCDDEE""><td width=""5%"""     
      temp = temp & ">ID</td><td>操作</td>"
      temp = temp & "<td>数值</td></tr>"
    While Not rs.EOF      
      temp = temp & "<tr><td bgcolor=""#CCDDEE"">"     
      temp = temp & rs("ID") & "</td><td>" & rs("szd_f")      
      temp = temp & "</td><td>" & rs("szd_t")      
      temp = temp & "</td></tr>"     
      rs.MoveNext      
    Wend
      temp = temp & "</table>"
      DisplayRecords = temp      
    Else     
      DisplayRecords = "Data Not Available."     
    End If
    rs.Close      
    conn.Close      
    Set rs = Nothing     
    Set conn = Nothing     
End Function

'写入缓存      
Function DisplayCachedRecords(Secs)      
    Dim retVal, datVal, temp1      
        retVal = Application("cache_demo")      
        datVal = Application("cache_demo_date")
        If datVal = "" Then     
            datVal = dateadd("s",Secs,Now)      
        End If
        temp1 = datediff("s", Now, datVal)     
    If temp1 > 0 And retVal <> "" Then     
        DisplayCachedRecords = retVal
        ' Debugging Code :      
        Response.Write "<b><font color=""green"">利用缓存读取数据"     
        Response.Write " ... (" & temp1 & " 秒剩余)</font></b>"     
        Response.Write "<br><br>"     
    Else
        Dim temp2      
        ' Change DisplayRecords() to the function whose       
        ' value you want to cache      
        temp2 = DisplayRecords()
        Application.Lock      
            Application("cache_demo") = temp2      
            Application("cache_demo_date") = DateAdd("s",Secs,Now)      
        Application.UnLock
        DisplayCachedRecords = temp2
        ' Debugging Code :      
        Response.Write "<b><font color=""red"">刷新缓存显示 ..."     
        Response.Write "</font></b><br><br>"
    End If     
End Function     
%>      
<!--      
Response.Write DisplayRecords()      
-->
<html>      
<head>      
    <title>利用缓存从数据库---读取数据</title>      
    <style>      
    body, p, td { font-family:Sans-Serif; font-size:8pt; }      
    td { padding-left: 5; }      
    </style>      
</head><body>      
<%      
    Dim t1, t2      
        t1 = Timer      
    Response.Write DisplayCachedRecords(20)      
        t2 = Timer      
%>
<p align="center">      
停留时间: <%= Left((CDbl((t2 - t1) * 1000.0)), 5) %> ms      
</p>
</body>
</html>