最近的兩個網站的開發使我產生了不少新的想法!也讀過了不少優秀的程式碼,但總沒有找到符合自己的模式!借鑒緩存的設計,我似乎找到了更便捷的思路。其實這裡的靜態頁面並不是真正意義上的靜態,但可以達到了靜態頁面的解析效率,還未經專案測試,拿來分享。
複製代碼代碼如下:
<%
Const DEVJS_INDEX=index.html
Const INDEX_DEFAULT_INTERVAL=300
Dim sLastUpdate
'用Application儲存最後更新的時間,而在頁面裡做判斷,每隔300秒(5分鐘)就產生一次頁面
sLastUpdate=Application(INDEX_LAST_Update)
If sLastUpdate= or DateDiff(s,sLastUpdate,now())>INDEX_DEFAULT_INTERVAL Then
'呼叫MakeIndex()產生頁面,同時變更最後更新時間
MakeIndex()
sLastUpdate=Now()
Application(INDEX_LAST_Update)=sLastUpdate
Response.Write 超出預設時間,更新於& sLastUpdate
Else
Response.Write 讀取靜態頁面,更新於& sLastUpdate
End If
Response.Write LoadTextFile(Server.MapPath(DEVJS_INDEX),GB2312)
Function MakeIndex()
sContent=<hr> & Now()
Call SaveTextFile(Server.MapPath(DEVJS_INDEX),GB2312,sContent)
End Function
%>
如果過期就更新頁面,沒有過期直接呼叫靜態頁面,這裡還用到了兩個函數,一併貼上,提醒注意一下,SaveTextFile()是以覆蓋方式寫入的
就是這一句oStream.SaveToFile sFilePath,2
複製代碼代碼如下:
<%
Function LoadTextFile(sFilePath,sCharset)
Dim oStream
Set oStream=Server.CreateObject(ADODB.Stream)
oStream.Type=2
oStream.Mode=3
oStream.Open
oStream.Charset=sCharset
oStream.Position=oStream.Size
oStream.LoadFromFile sFilePath
LoadTextFile=oStream.ReadText
oStream.Close
Set oStream=Nothing
End Function
Function SaveTextFile(sFilePath,sCharset,outString)
SaveFile=false
Dim oStream
Set oStream = Server.CreateObject(ADODB.Stream)
oStream.Type=2
oStream.Mode=3
oStream.Open
oStream.Charset=sCharset
oStream.WriteText = outString
oStream.SaveToFile sFilePath,2
oStream.Close
Set oStream = Nothing
SaveTextFile=true
End Function
%>
這個比緩存省事,也直接的多!其實,在MakeIndex()裡可以做很多事,像是讀取模板檔進行替換這些。