ASP缓存网站首页 加快浏览速度


网站的首页是打开次数最多的,论坛的第一页也是打开最多的。如果让这个页面最快的打开,是站长的关注,也是网友的需要。有人提出了用静态,也有人提出了首页建立缓存机制。但是相对于中小站长来说,他们很多人根本不懂的程序如何修改,如何去写,这就面临着一个问题:能否最简单的用上缓存或者静态。
这里提供一个精简的代码,简简单单的实现了首页缓存。我认为缓存是数据写在内存里面,应该比fso去读取静态页面快的多,具体不清楚谁快,但是肯定的是,比直接调用数据库快多了。

使用方法很简单,下面这个页面存为index.asp,然后你原来的asp修改为index2.asp即可!
可以自动刷新,也可以用index.asp?g=xx进行手动刷新。

<%
Dim time2,time1
time1=timer

Url = "http://www.ourcy.com/index2.asp"
cacheTime=600   '缓存时间,单位为s秒

'强制生成!
If Request.QueryString("g")<>"" Then Call makecache()

'判断 自动生成!
If application("ourcyindex")<>"" And isDate(application("tqexpire_ourcyindex")) Then '如果缓存的日期存在并且符合时间日期格式
    If CDate(application("tqexpire_ourcyindex"))<Now()  Then makecache() '如果缓存到期时间小于了现在的时间,就是过期了,调用生成缓存过程。
Else
     makecache()'如果缓存日期不存在或者不符合时间日期格式,直接调用生成过程。
End If

time2=timer
'这是我为了去掉我站内的执行时间而进行的替换,你可以不管,直接输出application("ourcyindex")就行了

response.write Replace(application("ourcyindex"),"info@ourcy.com","info@ourcy.com 执行时间 "& FormatNumber((time2-time1)*1000,1) " 毫秒 缓存过期:"& application("tqexpire_ourcyindex")"")


'定义生成缓存过程
Sub makecache
     List_PageCode=getHTTPPage(Url)
     application.lock
     application("ourcyindex")=List_PageCode
     application("tqexpire_ourcyindex")=dateadd("s",cacheTime,Now())
     application.unlock
End Sub


Function getHTTPPage(url)
     IF(IsObjInstalled("Microsoft.XMLHTTP") = False)THEN
         Response.Write "<br><br>服务器不支持Microsoft.XMLHTTP组件"
         Err.Clear
         Response.End
     END IF
    On Error Resume Next
    Dim http
     SET http=Server.CreateObject("Msxml2.XMLHTTP")
     Http.open "GET",url,False
     Http.send()
     IF(Http.readystate<>4)THEN
        Exit Function
     END IF
     getHTTPPage=BytesToBSTR(Http.responseBody,"GB2312")
     SET http=NOTHING
     IF(Err.number<>0)THEN
         Response.Write "<br><br>获取文件内容出错"
        'Response.End
         Err.Clear
     END IF  
End Function

        
Function BytesToBstr(CodeBody,CodeSet)
    Dim objStream
     SET objStream = Server.CreateObject("adodb.stream")
     objStream.Type = 1
     objStream.Mode =3
     objStream.Open
     objStream.Write CodeBody
     objStream.Position = 0
     objStream.Type = 2
     objStream.Charset = CodeSet
     BytesToBstr = objStream.ReadText
     objStream.Close
     SET objStream = NOTHING
End Function

'===========================================
'作   用:检查组件是否已经安装
'返回值:True   ----已经安装
'         False ----没有安装
'===========================================
Function IsObjInstalled(objName)
    On Error Resume Next
     IsObjInstalled = False
     Err = 0
    Dim testObj
     SET testObj = Server.CreateObject(objName)
     IF(0 = Err)THEN IsObjInstalled = True
     SET testObj = NOTHING
     Err = 0
End Function


Function cleanTime(str)
Dim re
Set re=new regExp
re.pattern="(\执行时间)(.*?)(\毫秒)"
re.IgnoreCase =false
re.Global=True
str=re.Replace(str,"")
cleanTime=str
End Function

%>

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: ASP缓存
相关日志:
评论: 0 | 引用: 0 | 查看次数: 576
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 20 字 | UBB代码 关闭 | [img]标签 关闭