您所在的位置:小祥子 » 编程 » ASP » 正文

ASP通用缓存引用文件

时间:2015-03-17 编辑:本站 来源:本站原创

这是我自己写的缓存方法,使用方法很简单。
将一下代码保存为cache.ASP并给需要缓存的页面进行引用,网站根目录创建文件夹cache,同时在引用页面最后加一句<%End If%>即可使用。

<%

'当前URL
Function GetThisUrl()
 Dim StrUrl
 Dim StrParam
 StrUrl     = Request.ServerVariables("URL")
If Trim(Request.QueryString) <> "" Then
 StrParam  = "?" & Trim(Request.QueryString)
Else
 StrParam  = ""
End If
GetThisUrl = Request.ServerVariables("SERVER_NAME") & StrUrl & StrParam
End Function

'获取原有页面代码
Function getpagecontent(url)
Dim http
Set http = Server.CreateObject("Microsoft.XMLHTTP")
With Http
 .open "GET",url,False
 .send()
 If .readystate <> 4 Then
  Exit Function
 End If
 getpagecontent = B2Bstr(.responseBody,"GB2312")
End With
Set http        = Nothing
If Err.Number <> 0 Then Err.Clear
End Function

'转换编码
Function B2Bstr(body,Cset)
Dim obJStream
Set objstream = Server.CreateObject("adodb.stream")
With objstream
 .Type        = 1
 .Mode        = 3
 .Open
 .Write body
 .Position = 0
 .Type     = 2
 .Charset  = Cset
 B2Bstr    = .ReadText
 .Close
End With
Set objstream = Nothing
End Function

'创建缓存
Sub CreateCacheFile(Filename,temp)
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set tf  = fso.CreateTextFile(Filename, True)
 tf.Write temp
 tf.Close
End Sub

'读取缓存
Function ReadCacheFile(TempString)
Dim str
Set stm   = Server.CreateObject("adodb.stream")
With stm
 .Type    = 2
 .Mode    = 3
 .Charset = "gb2312"
 .Open
 .loadfromfile TempString
 str = .readtext
 .Close
End With
Set stm       = Nothing
ReadCacheFile = str
End Function

 
Dim thisurl,thisdomain,cachefile,ViewPage,hostip
thisurl  = GetThisUrl()
thisdomain=Request.ServerVariables("SERVER_NAME")
cacheurl = "http://" &  thisurl
cachefile = Server.MapPath("/cache/" & Server.URLEncode(thisurl) & ".txt")
hostip="127.0.0.1" '这里配置服务器的IP
cachetime=1800 '单位秒
If Request.ServerVariables("REMOTE_ADDR") <> hostip Then
 Set fs    = Server.CreateObject("Scripting.FileSystemObject")
 If fs.FileExists(cachefile) Then   '查询缓存是否存在
 '存在继续判断缓存最后修改时间
  If DateDiff("s",fs.GetFile(cachefile).DateLastModified,Now()) > cachetime  Then
   ViewPage=getpagecontent(cacheurl)
   Call CreateCacheFile(cachefile,ViewPage)
  End If
 Else
  '缓存
  ViewPage=getpagecontent(cacheurl)
  Call CreateCacheFile(cachefile,ViewPage)
 End If
 Response.Write ReadCacheFile(cachefile)
 Set fs = Nothing
Else
%>

关键词:ASP 缓存 文件