我的CMS開發記 5 實現靜態化頁

2022-01-31 19:27:10 字數 1645 閱讀 9600

為了實現靜態化頁,我在裡可是搜了半天。最後找到兩個方案:

文中的,生成靜態頁後,使用url重寫重定向到靜態頁上。

使用404方式動態地生成靜態頁。

那麼這兩種那個好呢?嘿嘿,本人的辦法是,兩種都實現,然後自己選擇。是啊,不試一試怎麼知道哪種效率更好。

實現方面沒啥多說的,基本和兩位的辦法差不多。但是在生成靜態頁時,我用的既不是filter的辦法,也不是webclient的那種採集式的方法。因為我的系統比較特殊,是dnn式的單頁面系統。所以,最佳的實現方法,是孟子e章的重寫render方法的辦法。原來很簡單,先將render執行的結果儲存在字串裡,然後儲存到檔案裡,最後在response.write。

code

protected

override

void

render(htmltextwriter writer)}}

else

}**很簡單,我就不多廢話了。

根據我的測試,404方式的靜態化頁,並沒有出現先返回404再出現正確頁面的情況。我用httpwatch 跟蹤下來,http的頭返回是這樣的:如果html頁不存在,那麼返回302錯誤,然後轉向到自定義404頁。自定義404頁根據引數判斷請求的頁面,如果合法,那麼馬上生成這個頁面,這時候要注意,不能直接server.transfer到靜態頁。否則瀏覽器的url會錯誤。必須待生成完畢後 ,先返回乙個(no-cahce)的標記    然後 response.redirect到靜態頁去。如果不指定no-cahce將會導致瀏覽器呈現乙個空白頁。如果請求非法,那麼404頁面就輸出404標頭。

因此,404法靜態化確實可行,而且不會出現錯誤地返回404的情況,大可以放心使用。主要**:

至於動態頁,url重定向靜態頁,和404法靜態頁的效率,我這裡也試了一下:在本地機器上,用httpwatch觀察,在我充分地利用了快取等的前提下,動態首頁大約響應時間是0.010秒,而url法和404法兩者的響應時間 均為0.001秒。httpwatch提示<0.001。

但是在虛擬主機上,情況就大不相同了,我使用的是最便宜的空間,經過嘗試,404法的速度要遠高於url法。因為404法的靜態頁根本不經過asp.net,iis直接就處理了,而url法需要經過asp.net,由於虛擬主機的關係,始終是要慢了一點。

維護方便性上,url法要優於404法,url法配置方便,並且更新也方便,可以將需要更新的頁面的url存在記憶體裡,每次rewrite的時候就可以判斷了。而404法則比較麻煩,如果要更新頁面,則必須要設法刪除原來的靜態頁面,404頁面才能再次生效。而且在配置時需要虛擬主機配置404頁,否則根本無法使用。

最後要感謝兩位前輩趟出來的路,才能實現得比較順利。

靜態化 偽靜態的實現

偽靜態主要有兩種方式實現 1.配置 重啟伺服器,全域性 2.htaccess 區域性 1.配置 1.去除httpd.conf檔案中 loadmodule rewrite module modules mod rewrite.so 前面的 號 linux中如果httpd.conf中沒有這行 那麼就到與...

靜態化如何實現的

這裡要說的靜態化指的是頁面靜態化,也即生成實實在在的靜態檔案,也即不需要查詢資料庫就可以直接從檔案中獲取資料,指的是真靜態。它的實現方式主要有兩種 一種是我們在新增資訊入庫的時候就生成的靜態檔案,也稱為模板替換技術,這種主要用在後台,用於一些基本上很少變化的資訊上,在新增資訊的時候使用新增的資訊來替...

動態頁面靜態化的實現

首先,應該明確動態頁面與靜態頁面之間的區別,為什麼靜態頁面的載入要比動態的快。php檔案的執行階段是 語法分析 編譯 執行。動態是執行這整個過程。靜態 只是乙個純靜態的 html 檔案 跳過了分析和編譯的步驟,直接執行。優化頁面響應時間的常見四種方法 動態頁面靜態化,優化資料庫,使用負載均衡,使用快...