今天還算比較空閒!最近的兩個網站的開發使我產生了不少新的想法!也讀過了不少優秀的程式碼, 但總沒有找到符合自己的模式!借鑒緩存的設計,我似乎找到了更便捷的思路。其實這裡的靜態頁面並不是真正意義上的靜態,但可以達到了靜態頁面的解析效率,還未經專案測試,拿來分享。
<%
'文章來源:http://www.devjs.com
Const DEVJS_INDEX=index.htmlConst INDEX_DEFAULT_INTERVAL=300Dim sLastUpdate'用Application保存最後更新的時間,而在頁面裡做判斷,每隔300秒(5分鐘)就產生一次頁面sLastUpdate=Application(INDEX_LAST_Upate) DateDiff(s,sLastUpdate,now())>INDEX_DEFAULT_INTERVAL Then '呼叫MakeIndex()生成頁面,同時更改最後更新時間MakeIndex() sLastUpdate=Now() Application(INDEX_LAST_Update)=sLastUpdate=Now() Application(INDEX_LAST_Update)=sLastUpdate=Now() Application(INDEX_LAST_Update)=sLastUpdate=Now() 預設更新. sLastUpdateElse Response.Write讀取靜態頁面,更新於& sLastUpdateEnd IfResponse.Write LoadTextFile(Server.MapPath(DEVJS_INDEX),GB2312) Function MakeIndex() sContent=<hr> & Now() Call SaveTextFile(Server.MapPath(DEVJS_INDEX) 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=NothingEnd 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 = outStream.WriteText = outStream oText .SaveToFile sFilePath,2 oStream.Close Set oStream = Nothing SaveTextFile=trueEnd Function%>
這個比緩存省事,也直接的多!其實,在MakeIndex()裡可以做很多事,像是讀取模板檔進行替換這些。