ASP缓存网站首页 加快浏览速度
作者:cmscn 日期:2009-04-13
网站的首页是打开次数最多的,论坛的第一页也是打开最多的。如果让这个页面最快的打开,是站长的关注,也是网友的需要。有人提出了用静态,也有人提出了首页建立缓存机制。但是相对于中小站长来说,他们很多人根本不懂的程序如何修改,如何去写,这就面临着一个问题:能否最简单的用上缓存或者静态。
这里提供一个精简的代码,简简单单的实现了首页缓存。我认为缓存是数据写在内存里面,应该比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
%>
评论: 0 | 引用: 0 | 查看次数: 576
发表评论