加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

utf-8文件缓存在 asp伪静态情况下的实现代码

发布时间:2023-06-16 15:05:03 所属栏目:Asp教程 来源:
导读:该程序通过使用ASP的FSO功能,减少数据库的读取。经测试,可以减少90%的服务器负荷。页面访问速度基本与静态页面相当。

复制代码代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<% Response.CodeP
该程序通过使用ASP的FSO功能,减少数据库的读取。经测试,可以减少90%的服务器负荷。页面访问速度基本与静态页面相当。

复制代码代码如下:
 
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
 
<% Response.CodePage=65001%>
 
<% Response.Charset="UTF-8" %>
 
<%
 
'该程序通过使用ASP的FSO功能,减少数据库的读取。经测试,可以减少90%的服务器负荷。页面访问速度基本与静态页面相当。
 
'使用方法:将该文件放在网站里,然后在需要引用的文件的“第一行”用include引用即可。
 
'=======================参数区=============================
 
DirName="cachenew/" '静态文件保存的目录,结尾应带"/"。无须手动建立,程序会自动建立。
 
TimeDelay=30 '更新的时间间隔,单位为分钟,如1440分钟为1天。生成的静态文件在该间隔之后会被删除。
 
'======================主程序区============================
 
foxrax=Request("foxrax")
 
if foxrax="" then
 
FileName=GetStr()&".txt"
 
FileName=DirName&FileName
 
if tesfold(DirName)=false then'如果不存在文件夹则创建
 
createfold(Server.MapPath(".")&"/"&DirName)
 
end if
 
if ReportFileStatus(Server.MapPath(".")&"/"&FileName)=true then'如果存在生成的静态文件,则直接读取文件
 
Set FSO=CreateObject("Scripting.FileSystemObject")
 
Dim Files,LatCatch
 
Set Files=FSO.GetFile(Server.MapPath(FileName)) '定义CatchFile文件对象
 
LastCatch=CDate(Files.DateLastModified)
 
If DateDiff("n",LastCatch,Now())>TimeDelay Then'超过
 
List=getHTTPPage(GetUrl())
 
WriteFile(FileName)
 
Else
 
List=ReadFile(FileName)
 
End If
 
Set FSO = nothing
 
Response.Write(List)
 
Response.End()
 
else
 
List=getHTTPPage(GetUrl())
 
WriteFile(FileName)
 
end if
 
end if
 
'========================函数区============================
 
'获取当前页面url
 
Function GetStr()
 
'On Error Resume Next
 
Dim strTemps
 
strTemps = strTemps & Request.ServerVariables("HTTP_X_REWRITE_URL")
 
GetStr = Server.URLEncode(strTemps)
 
End Function
 
'获取缓存页面url
 
Function GetUrl()
 
On Error Resume Next
 
Dim strTemp
 
If LCase(Request.ServerVariables("HTTPS")) = "off" Then
 
strTemp = "http://"
 
Else
 
strTemp = "https://"
 
End If
 
strTemp = strTemp & Request.ServerVariables("SERVER_NAME")
 
If Request.ServerVariables("SERVER_PORT") <> 80 Then
 
strTemp = strTemp & ":" & Request.ServerVariables("SERVER_PORT")
 
end if
 
strTemp = strTemp & Request.ServerVariables("URL")
 
If Trim(Request.QueryString) <> "" Then
 
strTemp = strTemp & "?" & Trim(Request.QueryString) & "&foxrax=foxrax"
 
else
 
strTemp = strTemp & "?" & "foxrax=foxrax"
 
end if
 
GetUrl = strTemp
 
End Function
 
'抓取页面
 
Function getHTTPPage(url)
 
Set Mail1 = Server.CreateObject("CDO.Message")
 
Mail1.CreateMHTMLBody URL,31
 
AA=Mail1.HTMLBody
 
Set Mail1 = Nothing
 
getHTTPPage=AA
 
'Set Retrieval = Server.CreateObject("Microsoft.Xmlhttp")
 
'Retrieval.Open "GET",url,false,"",""
 
'Retrieval.Send
 
'getHTTPPage = Retrieval.ResponseBody
 
'Set Retrieval = Nothing
 
End Function
 
Sub WriteFile(filePath)
 
dim stm
 
set stm=Server.CreateObject("adodb.stream")
 
stm.Type=2 'adTypeText,文本数据
 
stm.Mode=3 'adModeReadWrite,读取写入,此参数用2则报错
 
stm.Charset="utf-8"
 
stm.Open
 
stm.WriteText list
 
stm.SaveToFile Server.MapPath(filePath),2 'adSaveCreateOverWrite,文件存在则覆盖
 
stm.Flush
 
stm.Close
 
set stm=nothing
 
End Sub
 
Function ReadFile(filePath)
 
dim stm
 
set stm=Server.CreateObject("adodb.stream")
 
stm.Type=1 'adTypeBinary,按二进制数据读入
 
stm.Mode=3 'adModeReadWrite ,这里只能用3用其他会出错
 
stm.Open
 
stm.LoadFromFile Server.MapPath(filePath)
 
stm.Position=0 '把指针移回起点
 
stm.Type=2 '文本数据
 
stm.Charset="utf-8"
 
ReadFile = stm.ReadText
 
stm.Close
 
set stm=nothing
 
End Function
 
'检测文件是否存在
 
Function ReportFileStatus(FileName)
 
set fso = server.createobject("scripting.filesystemobject")
 
if fso.fileexists(FileName) = true then
 
ReportFileStatus=true
 
else
 
ReportFileStatus=false
 
end if
 
set fso=nothing
 
end function
 
'检测目录是否存在
 
function tesfold(foname)
 
set fs=createobject("scripting.filesystemobject")
 
filepathjm=server.mappath(foname)
 
if fs.folderexists(filepathjm) then
 
tesfold=True
 
else
 
tesfold= False
 
end if
 
set fs=nothing
 
end function
 
'建立目录
 
sub createfold(foname)
 
set fs=createobject("scripting.filesystemobject")
 
fs.createfolder(foname)
 
set fs=nothing
 
end sub
 
'删除文件
 
function del_file(path) 'path,文件路径包含文件名
 
set objfso = server.createobject("scripting.FileSystemObject")
 
'path=Server.MapPath(path)
 
if objfso.FileExists(path) then '若存在则删除
 
objfso.DeleteFile(path) '删除文件
 
else
 
'response.write "<script language='Javascript'>alert('文件不存在')</script>"
 
end if
 
set objfso = nothing
 
end function
 
%>
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章