|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的;缓存|数据|显现写在后面的话:此篇仍是asp相干的,信任玩ASP的都有这个感到,当数占有5万多条时-------justlike音乐网,要挪用最新的10条在页面显现,糟的是,当n多用户翻开页面会见的时分,每一个用户每次都要读取数据库一次,这无疑下降了效力,很分明,假如能把数据能保留在内存上,然后读取,无疑加速了速率.所谓缓存实在就是在内存中启示一个用来保留数据的空间,利用缓存你就不必频仍的会见你保留在硬盘上的数据了,由于这些数据我们但愿每一个用户都能看到效果一样,思索利用的是application工具,由于它是一切会见者的共用的工具,存储的信息和界说的事务可以为一切者会见者利用,这里要利用asp内置工具APPLICATION了,关于application,有2个办法[lock和unlock],2个汇合[content和staticobjects],2个事务[入手下手的application_onstart和application_end],application变量不会由于用户的分开而消散,一旦创建,一向比及网站封闭和程序卸载为止,正由于云云,利用的时分要出格当心!,不然会占用内存,我在这里不必多说,有乐趣的查阅相干材料吧,大致是如许.我们是把数据写进一个自界说的application内里,在制订的工夫读取革新的,大致思绪就是如许.
实例演示.先创建一个复杂的数据库,写个function读取一下,写进一个dim变量temp中:
FunctionDisplayRecords()
这个函数本来给一个变量temp付上纪录的值
Dimsql,conn,rs
切合前提的sql语句
sql="SELECTid,[szd_f],[szd_t]FROMadmin"
翻开数据库毗连
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ="&Server.MapPath("db.mdb")
Setrs=Server.CreateObject("ADODB.Recordset")
rs.Opensql,conn,1,3
当切合sq语句l的数据没有显现终了时
IfNotrs.EOFThen
给temp变量赋值
Dimtemp
temp="<tablewidth=""90%""align=""center"""
temp=temp&"border=""1""bordercolor=""silver"""
temp=temp&"cellspacing=""2""cellpadding=""0"">"
temp=temp&"<trbgcolor=""#CCDDEE""><tdwidth=""5%"""
temp=temp&">ID</td><td>操纵</td>"
temp=temp&"<td>数值</td></tr>"
存在数据,接着赋值
WhileNotrs.EOF
temp=temp&"<tr><tdbgcolor=""#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>"
temp赋值终了,把它再前往给函数
DisplayRecords=temp
Else
DisplayRecords="DataNotAvailable."
EndIf
开释内存
rs.Close
conn.Close
Setrs=Nothing
Setconn=Nothing
EndFunction</P>ok,下面的函数改革终了,挪用的时分就是DisplayRecords.
上面是application大显神通了:
该函数是写进缓存
FunctionDisplayCachedRecords(Secs)
DimretVal,datVal,temp1
Secs是每主要革新数据的工夫,retVal是数据,datVal是残剩工夫
retVal=Application("cache_demo")获得appliction的值
datVal=Application("cache_demo_date")获得appliction的值
判别datVal的值,也就是要盘算工夫已往了没
IfdatVal=""Then
假如是空,datVal值为以后工夫按秒加上secs界说的工夫
datVal=DateAdd("s",Secs,Now)
EndIf
temp1是判别以后工夫和datVal的秒差
temp1=DateDiff("s",Now,datVal)
假如retVal已是下面函数的前往值且工夫年夜于0
Iftemp1>0AndretVal""Then
本函数前往纪录数
DisplayCachedRecords=retVal
Response.Write"<b><fontcolor=""green"">使用缓存读取数据"
Response.Write"...("&temp1&"秒残剩)</font></b>"
Response.Write"<br><br>"
Else
retVal是空的话,就付与DisplayRecords的值给变量temp2
Dimtemp2
temp2=DisplayRecords()
保留到Application.------------------>重点
Application.Lock
Application("cache_demo")=temp2
Application("cache_demo_date")=DateAdd("s",Secs,Now)
Application.UnLock
DisplayCachedRecords=temp2
这里任意写上了纪录的缓存的已往工夫,绝对总秒数倒差:
Response.Write"<b><fontcolor=""red"">革新缓存显现..."
Response.Write"</font></b><br><br>"
EndIf
EndFunction
%></P>申明终了.
以下为完全无正文代码
<%
FunctionDisplayRecords()
Dimsql,conn,rs
sql="SELECTid,[szd_f],[szd_t]FROMadmin"
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ="&Server.MapPath("db.mdb")
Setrs=Server.CreateObject("ADODB.Recordset")
rs.Opensql,conn,1,3
IfNotrs.EOFThen
Dimtemp
temp="<tablewidth=""90%""align=""center"""
temp=temp&"border=""1""bordercolor=""silver"""ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。 |
|