Asp教程

通过asp实例结合结合ACCESS,MSSQL来更好的深入Asp学习 - 爬坡者

« ASP利用application实现缓存[比较简单]application对象基础基础 »

Asp提高首页性能的一个技巧

一般一个网站的首页访问量是最大的,如果您的网站的首页打开的非常缓慢,您的客户将会陆续离开你的网站.通常我们把需要经过复杂运算或者查询数据库得出的数据缓存起来或者生成静态网页来提高web应用的性能,这次我们直接把首页的输出缓存成一个字符串,然后定时更新,即照顾了性能,又不影响首页的时效性.这里用到了一些VBS自定义类,Application对象,XmlHttp对象,adodb.stream对象的一些东西,相关知识大家可以查资料了解.

  最好让这个页和你要缓存的页在一个目录下,要不有些相对路径的图片就无法显示了,另外缓存有的页面会出现乱码,我还不知道怎么解决这个问题呢,可能在Response的时候需要设置一下编码类型,大家可以试试

<% 
Dim wawa,StarTime,EndTime 
StarTime=Timer() 
Set wawa=new Cls_Cache 
wawa.Reloadtime=0.5 
wawa.CacheName="wawa" 
wawa.Name="XmlInfoIndex" 
If wawa.ObjIsEmpty() Then CacheXmlInfoIndex() 
Response.Write wawa.value 
EndTime=Timer() 
Response.Write "<br>执行时间:" & FormatNumber((Endtime-StarTime)*1000,5) & "毫秒。" 

Sub CacheXmlInfoIndex() 
Dim BodyText, xml 
Set xml = Server.CreateObject("Microsoft.XMLHTTP") 
'把下面的地址替换成你的首页的文件地址,一定要用http://开头的绝对路径,不能写相对路径 
xml.Open "GET", "http://onlytiancai/bak/vote/InfoIndex.asp", False 
xml.Send 
BodyText=xml.ResponseBody 
BodyText=BytesToBstr(BodyText,"gb2312") 
wawa.Value=BodyText 
Set xml = Nothing 
End Sub 
Function BytesToBstr(body,Cset) 
dim objstream 
set objstream = Server.CreateObject("adodb.stream") 
objstream.Type = 1 
objstream.Mode =3 
objstream.Open 
objstream.Write body 
objstream.Position = 0 
objstream.Type = 2 
objstream.Charset = Cset 
BytesToBstr = objstream.ReadText 
objstream.Close 
set objstream = nothing 
End Function 
%> 

<% 
'下面这个类可以保存在单独的文件里,然后包含到此页 
Class Cls_Cache 
Rem ==================使用说明============================================== 
Rem = 本类模块是动网先锋原创,作者:迷城浪子。如采用本类模块,请不要去掉这个说明。这段注释不会影响执行的速度。= 
Rem = 作用:缓存和缓存管理类 = 
Rem = 公有变量:Reloadtime 过期时间(单位为分钟)缺省值为14400, = 
Rem = MaxCount 缓存对象的最大值,超过则自动删除使用次数少的对象。缺省值为300 = 
Rem = CacheName 缓存组的总名称,缺省值为"Dvbbs",如果一个站点中有超过一个缓存组,则需要外部改变这个值。 = 
Rem = 属性:Name 定义缓存对象名称,只写属性。 = 
Rem = 属性:value 读取和写入缓存数据。 = 
Rem = 函数:ObjIsEmpty()判断当前缓存是否过期。 = 
Rem = 方法:DelCahe(MyCaheName)手工删除一个缓存对象,参数是缓存对象的名称。 = 
Rem =========================================================== 
Public Reloadtime,MaxCount,CacheName 
Private LocalCacheName,CacheData,DelCount 
Private Sub Class_Initialize() 
Reloadtime=14400 
CacheName="Dvbbs" 
End Sub 
Private Sub SetCache(SetName,NewValue) 
Application.Lock 
Application(SetName) = NewValue 
Application.unLock 
End Sub 
Private Sub makeEmpty(SetName) 
Application.Lock 
Application(SetName) = Empty 
Application.unLock 
End Sub 
Public Property Let Name(ByVal vNewValue) 
LocalCacheName=LCase(vNewValue) 
End Property 
Public Property Let Value(ByVal vNewValue) 
If LocalCacheName<>"" Then 
CacheData=Application(CacheName&"_"&LocalCacheName) 
If IsArray(CacheData) Then 
CacheData(0)=vNewValue 
CacheData(1)=Now() 
Else 
ReDim CacheData(2) 
CacheData(0)=vNewValue 
CacheData(1)=Now() 
End If 
SetCache CacheName&"_"&LocalCacheName,CacheData 
Else 
Err.Raise vbObjectError + 1, "DvbbsCacheServer", " please change the CacheName." 
End If 
End Property 
Public Property Get Value() 
If LocalCacheName<>"" Then 
CacheData=Application(CacheName&"_"&LocalCacheName) 
If IsArray(CacheData) Then 
Value=CacheData(0) 
Else 
Err.Raise vbObjectError + 1, "DvbbsCacheServer", " The CacheData Is Empty." 
End If 
Else 
Err.Raise vbObjectError + 1, "DvbbsCacheServer", " please change the CacheName." 
End If 
End Property 
Public Function ObjIsEmpty() 
ObjIsEmpty=True 
CacheData=Application(CacheName&"_"&LocalCacheName) 
If Not IsArray(CacheData) Then Exit Function 
If Not IsDate(CacheData(1)) Then Exit Function 
If DateDiff("s",CDate(CacheData(1)),Now()) < 60*Reloadtime Then 
ObjIsEmpty=False 
End If 
End Function 
Public Sub DelCahe(MyCaheName) 
makeEmpty(CacheName&"_"&MyCaheName) 
End Sub 
End Class 
%> 


Asp提高首页性能的一个技巧

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80710

Copyright 2007-2008 papozhe.com [asp教程] All Rights Reserved.
浙ICP备07030537号
免责申明:所有文章除特别声明,均来自网上,主要为学习用!内容仅供参考,版权归原作者。如侵犯您利益,请来信告知.
Email:papozhe$Gmail.com QQ:76336503