技术开发 频道

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


【IT168技术文档】
  简单介绍:一般一个网站的首页访问量是最大的&def如果您的网站的首页打开的非常缓慢&def您的客户将会陆续离开你的网站.通常我们把需要经过复杂运算或者查询数据库得出的数据缓存起来或者生成静态网页来提高web应用的性能&def这次我们直接把首页的输出缓存成一个字符串&def然后定时更新&def即照顾了性能&def又不影响首页的时效性.这里用到了一些VBS自定义类&defApplication对象&defXmlHttp对象& defadodb.stream对象的一些东西&def相关知识大家可以查资料了解.
最好让这个页和你要缓存的页在一个目录下& def要不有些相对路径的图片就无法显示了&def另外缓存有的页面会出现乱码&def我还不知道怎么解决这个问题呢&def可能在Response的时候需要设置一下编码类型&def大家可以试试
dxlt% Dim wawa&defStarTime&defEndTime 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 "|dxltbr|dxgt执行时间:" &&dec FormatNumber((Endtime-StarTime)*1000&def5) &&dec "毫秒。" Sub CacheXmlInfoIndex() &decDim BodyText&def xml &decSet xml = Server.Createobject("Microsoft.XMLHTTP") &dec&dot把下面的地址替换成你的首页的文件地址&def一定要用http://开头的绝对路径&def不能写相对路径 &decxml.Open "GET"&def "http://onlytiancai/bak/vote/InfoIndex.asp"&def False &decxml.Send &dec &decBodyText=xml.ResponseBody &decBodyText=BytesToBstr(BodyText&def"gb2312") &decwawa.Value=BodyText Set xml = Nothing End Sub Function BytesToBstr(body&defCset) &dec &dec &dec &dec &dec &dec &dec dim objstream &dec &dec &dec &dec &dec &dec &dec set objstream = Server.Createobject("adodb.stream") &dec &dec &dec &dec &dec &dec &dec objstream.Type = 1 &dec &dec &dec &dec &dec &dec &dec objstream.Mode =3 &dec &dec &dec &dec &dec &dec &dec objstream.Open &dec &dec &dec &dec &dec &dec &dec objstream.Write body &dec &dec &dec &dec &dec &dec &dec objstream.Position = 0 &dec &dec &dec &dec &dec &dec &dec objstream.Type = 2 &dec &dec &dec &dec &dec &dec &dec objstream.Charset = Cset &dec &dec &dec &dec &dec &dec &dec BytesToBstr = objstream.ReadText &dec &dec &dec &dec &dec &dec &dec objstream.Close &dec &dec &dec &dec &dec &dec &dec set objstream = nothing End Function %|dxgt |dxlt% &dot下面这个类可以保存在单独的文件里&def然后包含到此页 Class Cls_Cache &decRem ==================使用说明============================================== &decRem = 本类模块是动网先锋原创,作者:迷城浪子。如采用本类模块,请不要去掉这个说明。这段注释不会影响执行的速度。= &decRem = 作用:缓存和缓存管理类 &dec &dec &dec &dec &dec &dec & dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec = &decRem = 公有变量:Reloadtime 过期时间(单位为分钟)缺省值为14400&def &dec &dec &dec &dec & dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec = &decRem = MaxCount 缓存对象的最大值,超过则自动删除使用次数少的对象。缺省值为300 &dec &dec &dec & dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec = &decRem = CacheName 缓存组的总名称,缺省值为"Dvbbs"&def如果一个站点中有超过一个缓存组,则需要外部改变这个值。 &dec & dec &dec &dec &dec &dec &dec = &decRem = 属性:Name 定义缓存对象名称,只写属性。 &dec &dec &dec &dec &dec & dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec = &decRem = 属性:value 读取和写入缓存数据。 &dec &dec &dec &dec &dec &dec & dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec = &decRem = 函数:ObjIsEmpty()判断当前缓存是否过期。 &dec &dec &dec &dec & dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec = &decRem = 方法:DelCahe(MyCaheName)手工删除一个缓存对象,参数是缓存对象的名称。 &dec &dec & dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec &dec = &decRem ================================================================ &decPublic Reloadtime&defMaxCount&defCacheName &decPrivate LocalCacheName&defCacheData&defDelCount &decPrivate Sub Class_Initialize() &dec &decReloadtime=14400 &dec &decCacheName="Dvbbs" &decEnd Sub &decPrivate Sub SetCache(SetName&defNewValue) &dec &decApplication.Lock &dec &decApplication(SetName) = NewValue &dec &decApplication.unLock &decEnd Sub &decPrivate Sub makeEmpty(SetName) &dec &decApplication.Lock &dec &decApplication(SetName) = Empty &dec &decApplication.unLock &decEnd Sub &decPublic &dec Property Let Name(ByVal vNewValue) &dec &decLocalCacheName=LCase(vNewValue) &decEnd Property &decPublic &dec Property Let Value(ByVal vNewValue) &dec &decIf LocalCacheName|dxlt|dxgt"" Then &dec &dec &decCacheData=Application(CacheName&&dec"_"&&decLocalCacheName) &dec &dec &decIf IsArray(CacheData) &dec Then &dec &dec &dec &decCacheData(0)=vNewValue &dec &dec &dec &decCacheData(1)=Now() &dec &dec &decElse &dec &dec &dec &decReDim CacheData(2) &dec &dec &dec &decCacheData(0)=vNewValue &dec &dec &dec &decCacheData(1)=Now() &dec &dec &decEnd If &dec &dec &decSetCache CacheName&&dec"_"&&decLocalCacheName&defCacheData &dec &decElse &dec &dec &decErr.Raise vbobjectError + 1&def "DvbbsCacheServer"&def " please change the CacheName." &dec &decEnd If &dec &dec &decEnd Property &decPublic Property Get Value() &dec &decIf LocalCacheName|dxlt|dxgt"" Then &dec &dec &decCacheData=Application(CacheName&&dec"_"&&decLocalCacheName) &dec &dec &dec &decIf IsArray(CacheData) Then &dec &dec &dec &decValue=CacheData(0) &dec &dec &decElse &dec &dec &dec &decErr.Raise vbobjectError + 1&def "DvbbsCacheServer"&def " The CacheData Is Empty." &dec &dec &decEnd If &dec &decElse &dec &dec &decErr.Raise vbobjectError + 1&def "DvbbsCacheServer"&def " please change the CacheName." &dec &decEnd If &decEnd Property &decPublic Function ObjIsEmpty() &dec &decObjIsEmpty=True &dec &decCacheData=Application(CacheName&&dec"_"&&decLocalCacheName) &dec &decIf Not IsArray(CacheData) Then Exit Function &dec &decIf Not IsDate(CacheData(1)) Then Exit Function &dec &decIf DateDiff("s"&defCDate(CacheData(1))&defNow()) |dxlt 60*Reloadtime &dec Then &dec &dec &decObjIsEmpty=False &dec &decEnd If &decEnd Function &decPublic Sub DelCahe(MyCaheName) &dec &decmakeEmpty(CacheName&&dec"_"&&decMyCaheName) &decEnd Sub End Class %|dxgt <script language=javascript src="/AD/200510/12.js"> <script type=text/javascript> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
0
相关文章