このプログラムは、ASP の FSO 機能を使用してデータベースの読み取りを削減します。テスト後、サーバーの負荷を 90% 削減できました。ページのアクセス速度は基本的に固定ページと同等です。次のようにコードをコピーします。
<%@LANGUAGE=VBSCRIPT コードページ=65001%>
<% Response.CodePage=65001%>
<% Response.Charset=UTF-8 %>
<%
'このプログラムは、ASP の FSO 機能を使用してデータベースの読み取りを削減します。テスト後、サーバーの負荷を 90% 削減できました。ページのアクセス速度は基本的に固定ページと同等です。
'使用方法: Web サイトにファイルを配置し、参照する必要があるファイルの最初の行で include を使用してそのファイルを参照します。
'=======================パラメータエリア======================== =====
DirName=cachenew/ '静的ファイルを保存するディレクトリの最後には / が必要です。手動で作成する必要はありません。プログラムが自動的に作成します。
TimeDelay=30 '更新時間間隔。単位は分です。たとえば、1440 分は 1 日です。生成された静的ファイルは、この間隔の後に削除されます。
'======================メインプログラムエリア======================== ====
foxrax=リクエスト(foxrax)
フォックスラックス = の場合
ファイル名=GetStr()&.txt
ファイル名=ディレクトリ名&ファイル名
if tesfold(DirName)=false then'フォルダーが存在しない場合は作成します
createfold(Server.MapPath(.)&/&DirName)
終了する場合
if ReportFileStatus(Server.MapPath(.)&/&FileName)=true then'生成された静的ファイルがある場合は、ファイルを直接読み取ります
FSO=CreateObject(Scripting.FileSystemObject) を設定します。
Dim ファイル、LatCatch
Set Files=FSO.GetFile(Server.MapPath(FileName)) 'CatchFile ファイル オブジェクトを定義します
LastCatch=CDate(Files.DateLastModified)
DateDiff(n,LastCatch,Now())>TimeDelay then' を超える場合
リスト=getHTTPPage(GetUrl())
WriteFile(ファイル名)
それ以外
リスト=読み取りファイル(ファイル名)
終了の場合
FSO = 何も設定しない
応答.書き込み(リスト)
Response.End()
それ以外
リスト=getHTTPPage(GetUrl())
WriteFile(ファイル名)
終了する場合
終了する場合
'========================ファンクションエリア======================= = =====
'現在のページのURLを取得します
関数 GetStr()
'エラー時は次へ再開
薄暗い時間
strTemps = strTemps & Request.ServerVariables(HTTP_X_REWRITE_URL)
GetStr = Server.URLEncode(strTemps)
終了機能
'キャッシュされたページのURLを取得します
関数 GetUrl()
エラー時は次へ再開
薄暗い温度
LCase(Request.ServerVariables(HTTPS)) = オフの場合
strTemp = http://
それ以外
strTemp = https://
終了の場合
strTemp = strTemp & Request.ServerVariables(SERVER_NAME)
If Request.ServerVariables(SERVER_PORT) <> 80 then
strTemp = strTemp & : & Request.ServerVariables(SERVER_PORT)
終了する場合
strTemp = strTemp & Request.ServerVariables(URL)
If Trim(Request.QueryString) <> then
strTemp = strTemp & ? & Trim(Request.QueryString) & &foxrax=foxrax
それ以外
strTemp = strTemp & ? & foxrax=foxrax
終了する場合
GetUrl = strTemp
終了機能
'ページをキャッチ
関数 getHTTPPage(url)
Mail1 = Server.CreateObject(CDO.Message) を設定します。
Mail1.CreateMHTMLBody URL、31
AA=メール1.HTML本文
Mail1 = 何も設定しない
getHTTPage=AA
'取得 = Server.CreateObject(Microsoft.Xmlhttp) を設定します
'取得.Open GET,url,false,,
'取得.送信
'getHTTPPage = 取得.ResponseBody
'取得 = なしを設定
終了機能
SubWriteFile(ファイルパス)
薄暗いstm
set stm=Server.CreateObject(adodb.stream)
stm.Type=2 'adTypeText、テキストデータ
stm.Mode=3 'adModeReadWrite、読み取りおよび書き込み。このパラメータが 2 の場合、エラーが報告されます。
stm.Charset=utf-8
stm.Open
stm.WriteText リスト
stm.SaveToFile Server.MapPath(filePath),2 'adSaveCreateOverWrite、ファイルが存在する場合は上書きします
stm.フラッシュ
stm.閉じる
stm=何も設定しない
エンドサブ
関数 ReadFile(ファイルパス)
薄暗い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.閉じる
stm=何も設定しない
終了機能
'ファイルが存在するかどうかを確認する
関数 ReportFileStatus(ファイル名)
set fso =server.createobject(scripting.filesystemobject)
fso.fileexists(FileName) = true の場合
ReportFileStatus=true
それ以外
ReportFileStatus=false
終了する場合
fso=何も設定しない
終了関数
'ディレクトリが存在するかどうかを確認する
関数 tesfold(foname)
set fs=createobject(scripting.filesystemobject)
filepathjm=server.mappath(foname)
fs.folderexists(filepathjm) の場合
tesfold=True
それ以外
tesfold=False
終了する場合
fs=何も設定しない
終了関数
'ディレクトリの作成
subcreatefold(foname)
set fs=createobject(scripting.filesystemobject)
fs.createfolder(foname)
fs=何も設定しない
エンドサブ
'ファイルを削除
function del_file(path) 'path、ファイルパスにはファイル名が含まれます
set objfso = server.createobject(scripting.FileSystemObject)
'パス=サーバー.マップパス(パス)
if objfso.FileExists(path) then '存在する場合は削除します
objfso.DeleteFile(path) 'ファイルを削除
それ以外
'response.write <script language='Javascript'>alert('ファイルが存在しません')</script>
終了する場合
objfso = 何も設定しない
終了関数
%>