asp

位置:IT落伍者 >> asp >> 浏览文章

asp从缓存读数据实例


发布日期:2019年08月15日
 
asp从缓存读数据实例
从文件读数据要比直接从数据库快测试读出条新闻读数据库用了毫秒读文件只用了毫秒下例为使用文件缓存的代码
使用方法在需要使用文件缓存的页面加入下列代码
<!#includefile="FileCatchasp">
<%
SetMyCatch=newCatchFile
MyCatchOverdue=’修改过期时间设置为分钟
ifMyCatchCatchNow(Rev)then
responsewriteMyCatchCatchData
responseend
endif
setMyCatch=nothing

%>
FileCatchasp
复制内容到剪贴板代码:
<%
’本文件用于签入原始文件实现对页面的文件Catch
如果文件请求为POST方式则取消此功能
文件的请求不能包含系统的识别关键字
ClassCatchFile
PublicOverdueMarkCFolderCFile’定义系统参数
PrivateScriptNameScriptPathServerHost’定义服务器/页面参数变量
PublicCatchData’输出的数据
PrivateSubClass_Initialize’初始化函数
’获得服务器及脚本数据
ScriptName=RequestServervariables("Script_Name")’识别出当前脚本的虚拟地址
ScriptPath=GetScriptPath(false)’识别出脚本的完整GET地址
ServerHost=RequestServervariables("Server_Name")’识别出当前服务器的地址
’初始化系统参数
Overdue=’默认分钟过期
Mark="NoCatch"’无Catch请求参数为NoCatch
CFolder=GetCFolder’定义默认的Catch文件保存目录
CFile=ServerURLEncode(ScriptPath)&"txt"’将脚本路径转化为文件路径
CatchData=""
endSub
PrivateFunctionGetCFolder
dimFSOCFolder
SetFSO=CreateObject("ScriptingFileSystemObject")’设置FSO对象
CFolder=ServerMapPath("/")&"/FileCatch/"
ifnotFSOFolderExists(CFolder)then
fsoCreateFolder(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&"/"
ifnotFSOFolderExists(CFolder)then
fsoCreateFolder(CFolder)
endif
GetCFolder=CFolder
setfso=nothing
EndFunction
PrivateFunctionbytesBSTR(vIn)’转换编码的函数
dimStrReturnThisCharCodeiNextCharCode
strReturn=""
Fori=ToLenB(vIn)
ThisCharCode=AscB(MidB(vIni))
IfThisCharCode<&HThen
strReturn=strReturn&Chr(ThisCharCode)
Else
NextCharCode=AscB(MidB(vIni+))
strReturn=strReturn&Chr(CLng(ThisCharCode)*&H+CInt(NextCharCode))
i=i+
EndIf
Next
bytesBSTR=strReturn
EndFunction
PublicFunctionCatchNow(Rev)’用户指定开始处理Catch操作
ifUCase(requestServervariables("Request_Method"))="POST"then
’当是POST方法不可使用文件Catch
Rev="使用POST方法请求页面不可以使用文件Catch功能"
CatchNow=false
else
ifrequestQuerystring(Mark)<>""then
’如果指定参数不为空表示请求不可以使用Catch
Rev="请求拒绝使用Catch功能"
CatchNow=false
else
CatchNow=GetCatchData(Rev)
endif
endif
EndFunction
PrivateFunctionGetCatchData(Rev)’读取Catch数据
DimFSOIsBuildCatch
SetFSO=CreateObject("ScriptingFileSystemObject")’设置FSO对象访问CatchFile
IfFSOFileExists(CFolder&CFile)Then
DimFileLastCatch
SetFile=FSOGetFile(CFolder&CFile)’定义CatchFile文件对象
LastCatch=CDate(FileDateLastModified)
ifDateDiff("n"LastCatchNow())>Overduethen
’如果超过了Catch时间
IsBuildCatch=true
else
IsBuildCatch=false
endif
SetFile=Nothing
else
IsBuildCatch=true
Endif
IfIsBuildCatchthen
GetCatchData=http://wwwcodecom/html/BuildCatch(Rev)’如果需要创建Catch则创建Catch文件同时设置Catch的数据
else
GetCatchData=http://wwwcodecom/html/ReadCatch(Rev)’如果不需要创建Catch则直接读取Catch数据
Endif
SetFSO=nothing
EndFunction
PrivateFunctionGetScriptPath(IsGet)’创建一个包含所有请求数据的地址
dimKeyFir
GetScriptPath=ScriptName
Fir=true
forEachkeyinRequestQueryString
IfFirthen
GetScriptPath=GetScriptPath&"?"
Fir=false
else
GetScriptPath=GetScriptPath&"&"
endif
GetScriptPath=GetScriptPath&ServerURLEncode(Key)&"="&ServerURLEncode(RequestQueryString(Key))
Next
ifIsGetthen
IfFirthen
GetScriptPath=GetScriptPath&"?"
Fir=false
else
GetScriptPath=GetScriptPath&"&"
endif
GetScriptPath=GetScriptPath&ServerURLEncode(Mark)&"=yes"
endif
EndFunction
’创建Catch文件
PrivateFunctionBuildCatch(Rev)
DimHTTPUrlOutCome
SetHTTP=CreateObject("MicrosoftXMLHTTP")
’OnErrorResumeNext
’responsewriteServerHost&GetScriptPath(true)
HTTPOpen"get""http://"&ServerHost&GetScriptPath(true)False
HTTPSend
ifErrnumber=then
CatchData=http://wwwcodecom/html/bytesBSTR(HTTPresponseBody)
BuildCatch=True
else
Rev="创建发生错误"&ErrDescription
BuildCatch=False
Errclear
endif
CallWriteCatch
setHTTP=nothing
EndFunction
PrivateFunctionReadCatch(Rev)
ReadCatch=IReadCatch(CFolder&CFileCatchDataRev)
EndFunction
PrivateSubWriteCatch
DimFSOTSO
SetFSO=CreateObject("ScriptingFileSystemObject")’设置FSO对象访问CatchFile
setTSO=FSOCreateTextFile(CFolder&CFiletrue)
TSOWrite(CatchData)
SetTSO=Nothing
SetFSO=Nothing
EndSub
EndClass
FunctionIReadCatch(FileDataRev)
DimFSOTSO
SetFSO=CreateObject("ScriptingFileSystemObject")’设置FSO对象访问CatchFile
’onerrorresumenext
setTSO=FSOOpenTextFile(Filefalse)
Data=http://wwwcodecom/html/TSOReadAll
ifErrnumber<>then
Rev="读取发生错误"&ErrDescription
ReadCatch=False
Errclear
else
IReadCatch=True
endif
SetTSO=Nothing
SetFSO=Nothing
EndFunction
%>

上一篇:asp判断用户是否注册代码

下一篇:ASP 获取腾讯IP地址的接口程序代码