使用application提高ASP数据显示效率

当数据上到好几万多条时,要调用几条数据在页面显示,ASP就会慢如蜗牛.最糟糕的是,当n多用户打开页面访问的时候,每个用户每次都要读取数据库一次,这无疑降低了效率,很明显, 如果能把数据能保存在内存上,然后读取,无疑加快了速度.

所谓缓存其实就是在内存中开辟一个用来保存数据的空间.

使用缓存你就不用频繁的访问你保存在硬盘上的数据了,因为这些数据我们希望每个用户都能看到效果一样,考虑使用的是application对象,因为它是所有访问者的共用的对象,存储的信息和定义的事件能够为所有者访问者使用,这里要使用asp内置对象application了.

关于application:

2个方法[lock 和 unlock],

2个集合[content 和 staticobjects],

2个事件[开始的application_onstart 和 application_end]

application变量不会因为用户的离开而消失,一旦建立,一直等到网站关闭和程序卸载为止,正因为如此,使用的时候要特别小心!,否则会占用内存(虚拟主机提供商很不高兴了).

我们是把数据写入一个自定义的application里面,在制定的时间读取刷新的,大体思路就是这样.

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

程序代码

<%  Function DisplayRecords()
&apos;这个函数原来给一个变量temp付上记录的值
Dim sql, conn, rs
&apos;符合条件的sql语句
sql = "Select id, [szd_f], [szd_t] FROM admin"
&apos;打开数据库连接
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
&apos;当符合sq语句l的数据没有显示完毕时
If Not rs.EOF Then
&apos;给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</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>"
&apos;temp赋值完毕,把它再返回给函数
DisplayRecords = temp
Else
DisplayRecords = "Data Not Available."
End If
&apos;释放内存
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Function %>

ok,上面的函数改造完毕,调用的时候就是DisplayRecords.

下面是application大显身手了:

程序代码

<%&apos;该函数是写入缓存
Function DisplayCachedRecords(Secs)
Dim retVal, datVal, temp1
&apos;Secs是每次要刷新数据的时间, retVal是数据,datVal是剩余时间
retVal = Application("cache_demo") &apos;取得appliction的值
datVal = Application("cache_demo_date") &apos;取得appliction的值
&apos;判断datVal 的值,也就是要计算时间过去了没
If datVal = "" Then
&apos;如果是空,datVal值为当前时间按秒加上secs定义的时间
datVal = DateAdd("s",Secs,Now)
End If
&apos;temp1是判断当前时间和datVal的秒差
temp1 = DateDiff("s", Now, datVal)
&apos;如果retVal已经是上面函数的返回值且时间大于0
If temp1 > 0 And retVal <> "" Then
&apos;本函数返回记录数
DisplayCachedRecords = retVal
Response.Write "<b><font color=""green"">利用缓存读取数据"
Response.Write " ... (" & temp1 & " 秒剩余)</font></b>"
Response.Write "<br><br>"
Else
&apos;retVal 是空的话,就赋予DisplayRecords的值给变量temp2
Dim temp2
temp2 = DisplayRecords()
&apos;保存到Application.------------------>重点
Application.Lock
Application("cache_demo") = temp2
Application("cache_demo_date") = DateAdd("s",Secs,Now)
Application.UnLock

DisplayCachedRecords = temp2

&apos; 这里随便写上了记录的缓存的过去时间,相对总秒数倒差 :

Response.Write "<b><font color=""red"">刷新缓存显示 ..."

Response.Write "</font></b><br><br>"

End If

End Function

%>

说明完毕.

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

时间: 2025-01-21 07:29:22

使用application提高ASP数据显示效率的相关文章

对提高ASP执行效率的几点看法

执行 对提高ASP执行效率的几点看法:<br><br>1.硬件问题:<br>服务器的设置和配置无疑是ASP执行速度的最主要决定因素,但有关这方面的问题与MiMi有关,无需罗嗦.<br><br>2.避免在一个页面中是用多种脚本语言<br>如:<script language="vbs">和<script language="javascript"><br>因为如

巧用缓存提高ASP应用程序的性能

程序|缓存|性能|缓存|性能 为了提高Asp程序的性能,人们常常将经常使用的数据缓存在 Application,但是你修改了数据库后怎么让application更新呢,本文给你提供了一个合理的解决办法. <%Class wawa_app_getrowspublic Function wawa_Get_List(strapp,strconn,strsql) '******************************** '功能:从Application中提取数组,如果application中的

蛙蛙推荐:巧用缓存提高asp程序的性能

程序|缓存|性能 <!-- 蛙蛙推荐:巧用缓存提高asp程序的性能 --><!--为了提高Asp程序的性能,人们常常将经常使用的数据缓存在 Application,但是你修改了数据库后怎么让application更新呢,本文给你提供了一个合理的解决办法,如果谁有更好的算法,请跟帖讨论一下,谢谢--><%Class wawa_app_getrowspublic Function wawa_Get_List(strapp,strconn,strsql)'*************

提高ASP应用程序的技巧(2)

程序|技巧     (2)如果你正在使用的是VBScript 5.0或更高的版本,你可以使用WITH--END WITH的结构,这样也能使ASP的性能提高不少.     (3)一般情况下,避免使用session变量,因为每一个session变量都占用一个线程,session调用是一个接一个的完成的.所以这样会降低ASP的速度,你可以使用QueryString集合或者隐藏的变量来代替session变量来存储数据.这样会比使用session变量占用的线程少.    (4)如果你实在无法避免使用ses

巧用缓存提高asp程序的性能

onlytiancai [原作] <!--为了提高Asp程序的性能,人们常常将经常使用的数据缓存在 Application,但是你修改了数据库后怎么让application更新呢,本文给你提供了一个合理的解决办法,如果谁有更好的算法,请跟帖讨论一下,谢谢--><%Class wawa_app_getrowspublic Function wawa_Get_List(strapp,strconn,strsql)'********************************'功能:从Ap

提高ASP应用程序的技巧

ASP是微软推出的一种服务器端命令执行环境,它可以使你轻松的制作交互式的WEB应用程序.作为目前NT平台上开发WEB服务器的一种使用最多的技术,它的出现取代了过去只有使用CGI技术才能做的许多事情,而且ASP对于数据库的控制简单有效,省去了CGI的大量编程工作. 由于ASP直接对服务器进行操作,因此,ASP设计的技巧就显得非常重要,不当的ASP应用程序会增加WEB服务器的负担,降低服务器的性能.我总结了一年来自己ASP设计的经验,希望能对大家有所帮助,不对的地方希望大家指正. 本文讨论的主要是A

模型驱动SOA帮助提高开发团队效率

做过应用软件开发的朋友们大多都熟悉传统的开发生命周期:应用软件首先从业务分 析员画在在纸上或者流程图工具中的业务草图开始,一个个功能被定义出来:然后交到开 发人员手里,设计,编码,组装:接着应用软件又交付业务分析员做测试:业务人员按照 当初设计草图勾勒的功能去测试,发现问题后报一个Bug,提请开发人员修改代码.反复 多次,最后交付的软件很少有和设计100%契合的,大部分是业务人员与开发人员互相让步 的结果.由业务人员直接参与测试,还是比较理想的情况,多数开发过程,测试由专门的 测试人员按照他们对

oracle 10g数据泵和导入导出性能对比(三)提高IMPDP导入效率的方法

前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章介绍提高IMPDP导入效率的方法. 上面一篇文章的测试中发现IMPDP的导入速度和IMP导入速度相差无几.而Oracle在介绍数据泵的时候,提到IMPDP的导入速度最高是IMP的10倍.不过好在IMPDP还是可以优化调整的,那就是通过设置PARALLEL来提高IMPDP的并行度. SQL> show parameter cpu NAME TYPE VALUE ---------

推荐8项提高 ASP.NET Web API 性能的技术_实用技巧

在本文中,我将介绍8项提高 ASP.NET Web API 性能的技术. 1) 使用最快的 JSON 序列化工具 JSON 的序列化对整个 ASP.NET Web API 的性能有着关键性的影响.在我的一个项目里,我从JSON.NET 序列化工具转到了ServiceStack.Text有一年半了. 我测量过,Web API 的性能提升了20%左右.我强烈建议你去尝试一下这个序列化工具.这里有一些最近的流行序列化工具性能的比较数据. 来源:theburningmonk 更新: 似乎It seams