1. 程式人生 > >ASP.NET 動態頁面靜態化 比較

ASP.NET 動態頁面靜態化 比較

1.模版法

該方法歷史悠久,具體處理流程為採用一個html模版,將其中的關鍵字替換為我們希望的資訊。

優點:

缺點: 所有的資訊都要採取字串批湊的方式來實現,比如需要一個列表,就需要拼湊字串。問題是開發週期長,可擴充套件性非常差,而且不易維護,難修改。

文章參考:

Asp.NET 生成靜態頁

2.擷取Control.Render()中的HtmlTextWriter的資料。

優點:

該方法比較方便而且靈活,在開發中不必顧慮動態和靜態頁面的統一處理模式。基本上按照動態頁面的處理過程處理就Ok了。

並可在轉換為靜態html頁面的時候過濾掉一些多餘的資料及在適當的地方插入資料。

資料插入可考慮採取在靜態頁面中做標記的處理方式,如

<!—Content Beginà一些正文<!--Content End  --> ,採取判斷<!-- Content End  -->標記的方式將需要加入的資料加入到該標記的前面,也可利用該方法替換掉一些在動態頁面中做好<!-- -->標記的原本用於動態回發等處理的邏輯。

文章參照:

How to freeze a dynamic aspx page into a static html page (on the server).

方案架構一:

l通過一個動態aspx轉換html生成器頁面來負責生成靜態的頁面。針對帖子Topic和論壇列表都有各自的

Generator程式。Generator程式為aspx型別!執行時,將通過一定的驗證模式驗證操作是否合法。

l通過一個後臺執行緒或者Windows服務來跟蹤資料庫中已經標記好的尚未生成或者已經更新的但是也尚未靜態化的資料列表,通過WebRequest來訪問靜態頁面生成器程式,通過一定的引數形式將欲生成的資料標識和生成動作通知給生成器Generator

lGenerator驗證請求是否合法,然後執行生成動作,將動態網頁生成為靜態html頁面。

方案架構二:

l論壇下的大部分動態aspx頁面其實都繼承自一個頁面生成器基類,該基類正常狀態下是不啟用的。該基類含有能夠生成靜態html的操作函式。

l

通過一個後臺執行緒或者Windows服務來跟蹤資料庫中已經建立或更新的資料,根據資料的內容通過WebRequest來訪問動態網頁的內容,並加上特殊的啟動生成器基類生成資料的標記(該標記可為加密的驗證邏輯)。

l動態頁面根據請求啟動生成html的功能,通過指定的處理類將相應的靜態檔案生成到與其路徑完全相同的路徑下。

如處理TopicView.aspx的生成靜態html的類通過TopicViewHtmlGenerator類來處理。

l該架構設計靈感參照淘寶的架構而來。

靜態頁面:

動態頁面:

l該架構的優點:

與動態網頁結合,開發上的顧慮減輕,程式碼重複勞動減少,保持面向物件特徵。