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

所属分类: 网络编程 / ASP编程 阅读数: 1582
收藏 0 赞 0 分享
简单介绍:一般一个网站的首页访问量是最大的,如果您的网站的首页打开的非常缓慢,您的客户将会陆续离开你的网站.通常我们把需要经过复杂运算或者查询数据库得出的数据缓存起来或者生成静态网页来提高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知识整理笔记4(问答模式)

这是关于asp知识整理的最后一份笔记,希望大家仔细阅读。
收藏 0 赞 0 分享

ASP基础知识VBScript基本元素讲解

这篇文章主要介绍了ASP基础知识VBScript基本元素的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

ASP编码和解码函数详解

这篇文章主要介绍了ASP编码和解码函数的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

ASP显示页面执行时间的方法

这篇文章主要介绍了ASP显示页面执行时间的方法,在本地测试一下输出页面需要多少时间,需要的朋友可以参考下
收藏 0 赞 0 分享

ASP基础入门第一篇(ASP技术简介)

本文将以 Active Server Pages 为中心,向你全面展示制作动态商业网站的步骤和技巧并通过大量的实例,让你在不断的理论和实践之中笑傲“网络”……
收藏 0 赞 0 分享

ASP基础入门第二篇(ASP基础知识)

这篇文章是ASP基础入门第二篇,第一篇展示了ASP动态网站设计的一些最基本的方法,相信通过实践各位对 ASP 已经有了最基本的了解,本文将进一步介绍ASP动态网站的一些基本技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

ASP基础入门第三篇(ASP脚本基础)

通过前两篇的学习,相信各位已经对 ASP 的动态网站设计有了一个基本的概念和整体的印象。从本篇开始作者将从脚本语言的使用着手,由浅入深地带领大家探索 ASP 动态网站设计的真正奥秘。
收藏 0 赞 0 分享

ASP基础入门第四篇(脚本变量、函数、过程和条件语句)

大家在学习了脚本语言 VBScript 的变量、常量和过程的基本概念后,本期将继续向各位介绍 VBScript 的函数和语法。
收藏 0 赞 0 分享

ASP基础入门第五篇(ASP脚本循环语句)

在本文上两篇中,我们学习了脚本语言 VBScript 的变量、函数、过程和条件语句,本篇将继续给大家介绍 VBScipt 的循环语句,并对脚本语言在 ASP 中的应用加以总结。  
收藏 0 赞 0 分享

ASP基础入门第六篇(ASP内建对象Request)

从本篇开始作者从 ASP 内建对象着手,为大家详细剖析 ASP 的六个内建对象和各种组件的特性和方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多