网站首页
cms
asp
php
jsp
asp.net
数据库
web前端
服务器
javascript
c#
vb.net
java
linux
office
数据结构
其他语言
网络安全
电脑故障
asp
位置:
IT落伍者
>>
asp
>> 浏览文章
asp从缓存读数据实例
发布日期:2019年08月15日
从文件读数据
要比直接从数据库快
测试读出
条新闻
读数据库用了
毫秒
读文件只用了
毫秒
下例为使用文件缓存的代码
使用方法
在需要使用文件缓存的页面加入下列代码
<!
#includefile="FileCatch
asp"
>
<%
SetMyCatch=newCatchFile
MyCatch
Overdue=
’修改过期时间设置为
分钟
ifMyCatch
CatchNow(Rev)then
response
writeMyCatch
CatchData
response
end
endif
setMyCatch=nothing
%>
FileCatch
asp
复制内容到剪贴板代码:
<%
’本文件用于签入原始文件
实现对页面的文件Catch
’
如果文件请求为POST方式
则取消此功能
’
文件的请求不能包含系统的识别关键字
ClassCatchFile
PublicOverdue
Mark
CFolder
CFile’定义系统参数
PrivateScriptName
ScriptPath
ServerHost’定义服务器/页面参数变量
PublicCatchData’输出的数据
PrivateSubClass_Initialize’初始化函数
’获得服务器及脚本数据
ScriptName=Request
Servervariables("Script_Name")’识别出当前脚本的虚拟地址
ScriptPath=GetScriptPath(false)’识别出脚本的完整GET地址
ServerHost=Request
Servervariables("Server_Name")’识别出当前服务器的地址
’初始化系统参数
Overdue=
’默认
分钟过期
Mark="NoCatch"’无Catch请求参数为NoCatch
CFolder=GetCFolder’定义默认的Catch文件保存目录
CFile=Server
URLEncode(ScriptPath)&"
txt"’将脚本路径转化为文件路径
CatchData=""
endSub
PrivateFunctionGetCFolder
dimFSO
CFolder
SetFSO=CreateObject("Scripting
FileSystemObject")’设置FSO对象
CFolder=Server
MapPath("/")&"/FileCatch/"
ifnotFSO
FolderExists(CFolder)then
fso
CreateFolder(CFolder)
endif
ifMonth(Now())<
then
CFolder=CFolder&"/
"&Month(Now())
else
CFolder=CFolder&Month(Now())
endif
ifDay(Now())<
then
CFolder=CFolder&"
"&Day(Now())
else
CFolder=CFolder&Day(Now())
endif
CFolder=CFolder&"/"
ifnotFSO
FolderExists(CFolder)then
fso
CreateFolder(CFolder)
endif
GetCFolder=CFolder
setfso=nothing
EndFunction
PrivateFunctionbytes
BSTR(vIn)’转换编码的函数
dimStrReturn
ThisCharCode
i
NextCharCode
strReturn=""
Fori=
ToLenB(vIn)
ThisCharCode=AscB(MidB(vIn
i
))
IfThisCharCode<&H
Then
strReturn=strReturn&Chr(ThisCharCode)
Else
NextCharCode=AscB(MidB(vIn
i+
))
strReturn=strReturn&Chr(CLng(ThisCharCode)*&H
+CInt(NextCharCode))
i=i+
EndIf
Next
bytes
BSTR=strReturn
EndFunction
PublicFunctionCatchNow(Rev)’用户指定开始处理Catch操作
ifUCase(request
Servervariables("Request_Method"))="POST"then
’当是POST方法
不可使用文件Catch
Rev="使用POST方法请求页面
不可以使用文件Catch功能"
CatchNow=false
else
ifrequest
Querystring(Mark)<>""then
’如果指定参数不为空
表示请求不可以使用Catch
Rev="请求拒绝使用Catch功能"
CatchNow=false
else
CatchNow=GetCatchData(Rev)
endif
endif
EndFunction
PrivateFunctionGetCatchData(Rev)’读取Catch数据
DimFSO
IsBuildCatch
SetFSO=CreateObject("Scripting
FileSystemObject")’设置FSO对象
访问CatchFile
IfFSO
FileExists(CFolder&CFile)Then
DimFile
LastCatch
SetFile=FSO
GetFile(CFolder&CFile)’定义CatchFile文件对象
LastCatch=CDate(File
DateLastModified)
ifDateDiff("n"
LastCatch
Now())>Overduethen
’如果超过了Catch时间
IsBuildCatch=true
else
IsBuildCatch=false
endif
SetFile=Nothing
else
IsBuildCatch=true
Endif
IfIsBuildCatchthen
GetCatchData=http://www
code
com/html/BuildCatch(Rev)’如果需要创建Catch
则创建Catch文件
同时设置Catch的数据
else
GetCatchData=http://www
code
com/html/ReadCatch(Rev)’如果不需要创建Catch
则直接读取Catch数据
Endif
SetFSO=nothing
EndFunction
PrivateFunctionGetScriptPath(IsGet)’创建一个包含所有请求数据的地址
dimKey
Fir
GetScriptPath=ScriptName
Fir=true
forEachkeyinRequest
QueryString
IfFirthen
GetScriptPath=GetScriptPath&"?"
Fir=false
else
GetScriptPath=GetScriptPath&"&"
endif
GetScriptPath=GetScriptPath&Server
URLEncode(Key)&"="&Server
URLEncode(Request
QueryString(Key))
Next
ifIsGetthen
IfFirthen
GetScriptPath=GetScriptPath&"?"
Fir=false
else
GetScriptPath=GetScriptPath&"&"
endif
GetScriptPath=GetScriptPath&Server
URLEncode(Mark)&"=yes"
endif
EndFunction
’创建Catch文件
PrivateFunctionBuildCatch(Rev)
DimHTTP
Url
OutCome
SetHTTP=CreateObject("Microsoft
XMLHTTP")
’OnErrorResumeNext
’response
writeServerHost&GetScriptPath(true)
HTTP
Open"get"
"http://"&ServerHost&GetScriptPath(true)
False
HTTP
Send
ifErr
number=
then
CatchData=http://www
code
com/html/bytes
BSTR(HTTP
responseBody)
BuildCatch=True
else
Rev="创建发生错误
"&Err
Description
BuildCatch=False
Err
clear
endif
CallWriteCatch
setHTTP=nothing
EndFunction
PrivateFunctionReadCatch(Rev)
ReadCatch=IReadCatch(CFolder&CFile
CatchData
Rev)
EndFunction
PrivateSubWriteCatch
DimFSO
TSO
SetFSO=CreateObject("Scripting
FileSystemObject")’设置FSO对象
访问CatchFile
setTSO=FSO
CreateTextFile(CFolder&CFile
true)
TSO
Write(CatchData)
SetTSO=Nothing
SetFSO=Nothing
EndSub
EndClass
FunctionIReadCatch(File
Data
Rev)
DimFSO
TSO
SetFSO=CreateObject("Scripting
FileSystemObject")’设置FSO对象
访问CatchFile
’onerrorresumenext
setTSO=FSO
OpenTextFile(File
false)
Data=http://www
code
com/html/TSO
ReadAll
ifErr
number<>
then
Rev="读取发生错误
"&Err
Description
ReadCatch=False
Err
clear
else
IReadCatch=True
endif
SetTSO=Nothing
SetFSO=Nothing
EndFunction
%>
上一篇:
asp判断用户是否注册代码
下一篇:
ASP 获取腾讯IP地址的接口程序代码