asp从缓存读数据实例_ASP教程
教程Tag:暂无Tag,欢迎添加,赚取U币!
推荐:asp防止网页刷新代码减轻服务器负担,asp防止网页刷新代码 SubPreventRefresh() DimRefreshTime,isRefresh RefreshTime=10防止刷新时间,单位(秒) isRefresh=1是否使用防刷新功能,0=否,1=是 IfisRefresh=1Then If(NotIsEmpty(Session(RefreshTime)))AndRefreshTime0Then IfDateDiff(s,Se
-
从文件读数据,要比直接从数据库快,测试读出6000条新闻,读数据库用了23579毫秒,读文件只用了123毫秒,下例为使用文件缓存的代码
使用方法,在需要使用文件缓存的页面加入下列代码,
<!--#include file="FileCatch.asp" -->
<%
Set MyCatch=new CatchFile
MyCatch.Overdue=10 ’修改过期时间设置为10分钟
if MyCatch.CatchNow(Rev) then
response.write MyCatch.CatchData
response.end
end if
set MyCatch=nothing
%>
FileCatch.asp
复制内容到剪贴板代码:
<%
’ 本文件用于签入原始文件,实现对页面的文件Catch
’ 1、如果文件请求为POST方式,则取消此功能
’ 2、文件的请求不能包含系统的识别关键字
Class CatchFile
Public Overdue,Mark,CFolder,CFile ’定义系统参数
Private ScriptName,ScriptPath,ServerHost ’定义服务器/页面参数变量
Public CatchData ’输出的数据
Private Sub Class_Initialize ’初始化函数
’获得服务器及脚本数据
ScriptName=Request.Servervariables("Script_Name") ’识别出当前脚本的虚拟地址
ScriptPath=GetScriptPath(false) ’识别出脚本的完整GET地址
ServerHost=Request.Servervariables("Server_Name") ’识别出当前服务器的地址
’初始化系统参数
Overdue=30 ’默认30分钟过期
Mark="NoCatch" ’无Catch请求参数为 NoCatch
CFolder=GetCFolder ’定义默认的Catch文件保存目录
CFile=Server.URLEncode(ScriptPath)&".txt" ’将脚本路径转化为文件路径
CatchData=""
end Sub
Private Function GetCFolder
dim FSO,CFolder
Set FSO=CreateObject("Scripting.FileSystemObject") ’设置FSO对象
CFolder=Server.MapPath("/")&"/FileCatch/"
if not FSO.FolderExists(CFolder) then
fso.CreateFolder(CFolder)
end if
if Month(Now())<10 then
CFolder=CFolder&"/0"&Month(Now())
else
CFolder=CFolder&Month(Now())
end if
if Day(Now())<10 then
CFolder=CFolder&"0"&Day(Now())-
else
CFolder=CFolder&Day(Now())
end if
CFolder=CFolder&"/"
if not FSO.FolderExists(CFolder) then
fso.CreateFolder(CFolder)
end if
GetCFolder=CFolder
set fso=nothing
End Function
Private Function bytes2BSTR(vIn) ’转换编码的函数
dim StrReturn,ThisCharCode,i,NextCharCode
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
Public Function CatchNow(Rev) ’用户指定开始处理Catch操作
if UCase(request.Servervariables("Request_Method"))="POST" then
’当是POST方法,不可使用文件Catch
Rev="使用POST方法请求页面,不可以使用文件Catch功能"
CatchNow=false
else
if request.Querystring(Mark)<>"" then
’如果指定参数不为空,表示请求不可以使用Catch-
Rev="请求拒绝使用Catch功能"
CatchNow=false
else
CatchNow=GetCatchData(Rev)
end if
end if
End Function
Private Function GetCatchData(Rev) ’读取Catch数据
Dim FSO,IsBuildCatch
Set FSO=CreateObject("Scripting.FileSystemObject") ’设置FSO对象,访问CatchFile
If FSO.FileExists(CFolder&CFile) Then
Dim File,LastCatch
Set File=FSO.GetFile(CFolder&CFile) ’定义CatchFile文件对象
LastCatch=CDate(File.DateLastModified)
if DateDiff("n",LastCatch,Now())>Overdue then
’如果超过了Catch时间
IsBuildCatch=true
else
IsBuildCatch=false
end if
Set File=Nothing
else
IsBuildCatch=true
End if
If IsBuildCatch then
GetCatchData=http://www.code-123.com/html/BuildCatch(Rev) ’如果需要创建Catch,则创建Catch文件,同时设置Catch的数据
else
GetCatchData=http://www.code-123.com/html/ReadCatch(Rev) ’如果不需要创建Catch,则直接读取Catch数据
End if
Set FSO=nothing-
End Function
Private Function GetScriptPath(IsGet) ’创建一个包含所有请求数据的地址
dim Key,Fir
GetScriptPath=ScriptName
Fir=true
for Each key in Request.QueryString
If Fir then
GetScriptPath=GetScriptPath&"?"
Fir=false
else
GetScriptPath=GetScriptPath&"&"
end if
GetScriptPath=GetScriptPath&Server.URLEncode(Key)&"="&Server.URLEncode(Request.QueryString(Key))
Next
if IsGet then
If Fir then
GetScriptPath=GetScriptPath&"?"
Fir=false
else
GetScriptPath=GetScriptPath&"&"
end if
GetScriptPath=GetScriptPath&Server.URLEncode(Mark)&"=yes"
end if
End Function
’创建Catch文件
Private Function BuildCatch(Rev)
Dim HTTP,Url,OutCome
Set HTTP=CreateObject("Microsoft.XMLHTTP")
’ On Error Resume Next
’ response.write ServerHost&GetScriptPath(true)
HTTP.Open "get","http://"&ServerHost&GetScriptPath(true),False
HTTP.Send
if Err.number=0 then
CatchData=http://www.code-123.com/html/bytes2BSTR(HTTP.responseBody)-
BuildCatch=True
else
Rev="创建发生错误:"&Err.Description
BuildCatch=False
Err.clear
end if
Call WriteCatch
set HTTP=nothing
End Function
Private Function ReadCatch(Rev)
ReadCatch=IReadCatch(CFolder&CFile,CatchData,Rev)
End Function
Private Sub WriteCatch
Dim FSO,TSO
Set FSO=CreateObject("Scripting.FileSystemObject") ’设置FSO对象,访问CatchFile
set TSO=FSO.CreateTextFile(CFolder&CFile,true)
TSO.Write(CatchData)
Set TSO=Nothing
Set FSO=Nothing
End Sub
End Class
Function IReadCatch(File,Data,Rev)
Dim FSO,TSO
Set FSO=CreateObject("Scripting.FileSystemObject") ’设置FSO对象,访问CatchFile
’ on error resume next
set TSO=FSO.OpenTextFile(File,1,false)
Data=http://www.code-123.com/html/TSO.ReadAll
if Err.number<>0 then
Rev="读取发生错误:"&Err.Description
ReadCatch=False
Err.clear
else
IReadCatch=True
end if
Set TSO=Nothing
Set FSO=Nothing
End Function
%>
-
BuildCatch=True
-
End Function
-
Rev="请求拒绝使用Catch功能"
-
else
分享:asp调用c#编制的com组件实例1新建类库MyTestDLL 2右击项目MyTestDLL-》属性-》生成-》勾选为COM互操作注册 3打开AssemblyInfo.cs文件修改[assembly:ComVisible(true)] 4打开VisualSutdio2008的命令提示行工具输入guidgen.exe选择DEFINE_GUID单击NewGUID 5代码 1、每个类名对应一个接口名,接口名
相关ASP教程:
- 相关链接:
- 教程说明:
ASP教程-asp从缓存读数据实例。