為了實現靜態化頁,我在博客園裡可是搜了半天。最後找到兩個方案:
http://www.cnblogs.com/hsqzzzl/archive/2005/10/23/260122.html文中的,生成靜態頁後,使用url重寫重定向到靜態頁上。
http://www.cnblogs.com/nurong/archive/2005/10/15/255439.html 使用404方式動態地生成靜態頁。
那麼這兩種那個好呢?嘿嘿,本人的辦法是,兩種都實現,然後自己選擇。是啊,不試一試怎麼知道哪種效率更好。
實現方面沒啥多說的,基本和兩位的辦法差不多。但是在生成靜態頁時,我用的既不是filter的辦法,也不是webclient的那種采集式的方法。因為我的系統比較特殊, 是DNN式的單頁面系統。所以,最佳的實現方法,是孟子E章的重寫Render方法的辦法。原來很簡單,先將Render執行的結果保存在字符串裡,然後保存到文件裡,最後在 Response.write。
protected override void Render(HtmlTextWriter writer)
{
//***收到此標志表示需要將此頁面靜態化
if (HttpContext.Current.Items.Contains("createstaticfile"))
{
string file = (string)HttpContext.Current.Items["createstaticfile"];
using (System.IO.StringWriter html = new System.IO.StringWriter())
{
using (System.Web.UI.HtmlTextWriter tw = new HtmlTextWriter(html))
{
base.Render(tw);
Response.Write(html);
StaticFile.CreateHtml(file, html.ToString(), Response.ContentEncoding);
}
}
}
else
{
base.Render( writer );
}
}