從文件讀數據,要比直接從數據庫快,測試讀出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&n