做網(wǎng)站時(shí),有時(shí)為了提高性能會(huì)將網(wǎng)站首頁(yè)生成靜態(tài)頁(yè)(當(dāng)然, Asp.net中頁(yè)面緩存也是一個(gè)不錯(cuò)的選擇了 將頁(yè)面生成靜態(tài)的方法有多中,據(jù)不完全統(tǒng)計(jì)有N種(N>1) 呵呵
代碼如下
protected override void Render(HtmlTextWriter writer) ...{ System.IO.StringWriter html = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter tw = new HtmlTextWriter(html); base.Render(tw); System.IO.StreamWriter sw = new System.IO.StreamWriter(Server.MapPath("index.html"), false, System.Text.Encoding.Default); sw.Write(html.ToString()); sw.Close(); tw.Close(); Response.Write("頁(yè)面生成成功!"); } 將以上上函數(shù)數(shù)加如到你要生成靜太文件的頁(yè)面里, 函數(shù)從載了,Render函數(shù) 作用是把頁(yè)面的 html文本截下來,保存到文件里, 進(jìn)一步的可以去看一下asp.net頁(yè)面生命過程.
靜態(tài)頁(yè)面的生成
protected override void Render(HtmlTextWriter writer) { StreamWriter r=new StreamWriter(Server.MapPath(StaticFileName), false,System.Text.Encoding.UTF8); //StaticFileName是html文件名 HtmlTextWriter h=new HtmlTextWriter(r); base.Render(h); r.Close(); h.Close(); Response.Redirect(StaticFileName); }
然后在同一aspx的pageLoad事件中判斷StaticFileName是否已經(jīng)存在,如果存在,就應(yīng)該直接轉(zhuǎn)向,不應(yīng)該繼續(xù)生成頁(yè)面了。還可將共方法定義到父類中,然后從配置文件中讀取是否生成跳轉(zhuǎn)等
|