ASP提高数据显示效率-缓存探幽

她的名字有个张

她的名字有个张

2016-02-19 19:29

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享ASP提高数据显示效率-缓存探幽,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

  写在前面的话:此篇还是asp相关的,相信玩ASP的都有这个感觉,当数据有5万多条时-------just like音乐网,要调用最新的10条在页面显示,糟糕的是,当n多用户打开页面访问的时候,每个用户每次都要读取数据库一次,这无疑降低了效率,很明显, 如果能把数据能保存在内存上,然后读取,无疑加快了速度. 所谓缓存其实就是在内存中开辟一个用来保存数据的空间,使用缓存你就不用频繁的访问你保存在硬盘上的数据了,因为这些数据我们希望每个用户都能看到效果一 样,考虑使用的是application对象,因为它是所有访问者的共用的对象,存储的信息和定义的事件能够为所有者访问者使用,这里要使用asp内置对 象APPLICATION了,关于application,有2个方法[lock和unlock],2个集合[content和 staticobjects],2个事件[开始的application_onstart和application_end],application变 量不会因为用户的离开而消失,一旦建立,一直等到网站关闭和程序卸载为止,正因为如此,使用的时候要特别小心!,否则会占用内存,我在这里不用多说,有兴 趣的查阅相关资料吧,大体是这样.我们是把数据写入一个自定义的application里面,在制定的时间读取刷新的,大体思路就是这样.

  实例演示.先建立一个简单的数据库,写个function读取一下,写入一个dim变量temp中:

  以下是引用片段:
  Function DisplayRecords()
  '这个函数原来给一个变量temp付上记录的值
  Dim sql, conn, rs
  '符合条件的sql语句
  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
  '当符合sq语句l的数据没有显示完毕时
  If Not rs.EOF Then
  '给temp变量赋值
  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/tdtd操作/td"
  temp = temp & "td数值/td/tr"
  While Not rs.EOF
  temp = temp & "trtd bgcolor=""#CCDDEE"""
  temp = temp & rs("ID") & "/tdtd" & rs("szd_f")
  temp = temp & "/tdtd" & rs("szd_t")
  temp = temp & "/td/tr"
  rs.MoveNext
  Wend
  temp = temp & "/table"
  'temp赋值完毕,把它再返回给函数
  DisplayRecords = temp
  Else
  DisplayRecords = "Data Not Available."
  End If
  '释放内存
  rs.Close
  conn.Close
  Set rs = Nothing
  Set conn = Nothing
  End Function
  ok,上面的函数改造完毕,调用的时候就是DisplayRecords.
  下面是application大显身手了:
  '该函数是写入缓存
  Function DisplayCachedRecords(Secs)
  Dim retVal, datVal, temp1
  'Secs是每次要刷新数据的时间, retVal是数据,datVal是剩余时间
  retVal = Application("cache_demo") '取得appliction的值
  datVal = Application("cache_demo_date") '取得appliction的值
  '判断datVal 的值,也就是要计算时间过去了没
  If datVal = "" Then
  '如果是空,datVal值为当前时间按秒加上secs定义的时间
  datVal = DateAdd("s",Secs,Now)
  End If
  'temp1是判断当前时间和datVal的秒差
  temp1 = DateDiff("s", Now, datVal)
  '如果retVal已经是上面函数的返回值且时间大于0
  If temp1 0 And retVal "" Then
  '本函数返回记录数
  DisplayCachedRecords = retVal
  Response.Write "bfont color=""green""利用缓存读取数据"
  Response.Write " ... (" & temp1 & " 秒剩余)/font/b"
  Response.Write "brbr"
  Else
  'retVal 是空的话,就赋予DisplayRecords的值给变量temp2
  Dim temp2
  temp2 = DisplayRecords()
  '保存到Application.------------------重点
  Application.Lock
  Application("cache_demo") = temp2
  Application("cache_demo_date") = DateAdd("s",Secs,Now)
  Application.UnLock
  DisplayCachedRecords = temp2
  ' 这里随便写上了记录的缓存的过去时间,相对总秒数倒差 :
  Response.Write "bfont color=""red""刷新缓存显示 ..."
  Response.Write "/font/bbrbr"
  End If
  End Function
  %

  说明完毕.

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  以下为完整无注释代码

  调用方法:%=DisplayCachedRecords(20)%

  写在后面的话:如果你感觉你的服务器内存不够大的话,不要大量使用缓存.

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)
展开更多 50%)
分享

猜你喜欢

ASP提高数据显示效率-缓存探幽

Web开发
ASP提高数据显示效率-缓存探幽

提高MySQL中数据装载效率

编程语言 网络编程
提高MySQL中数据装载效率

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

提高ASP页面的执行效率(上)

ASP
提高ASP页面的执行效率(上)

提高ASP页面的执行效率(下)

ASP
提高ASP页面的执行效率(下)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

提高ASP页面的执行效率(中)

ASP
提高ASP页面的执行效率(中)

提高VisualBasic访问数据库效率

编程语言 网络编程
提高VisualBasic访问数据库效率

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

关于Java编程的中文问题的几条分析原则

关于Java编程的中文问题的几条分析原则

将内容自动添加到指定文本域的JS

将内容自动添加到指定文本域的JS
下拉加载更多内容 ↓