aspx頁面生成靜態的HTML頁面的三種方法

asp教程x頁面生成靜態的HTML頁面的三種方法

asp.net教程系統中,有些動態的頁面常被頻繁,如我們的首頁index.aspx它涉及到大量的數據庫教程查詢工作,當不斷有用戶它時,伺服器便不斷向數據庫的查詢,實際上做了許多重複的工作

伺服器端的myPage.aspx

客戶端顯示myPage.htm

客戶端

針對這種資源的浪費情況,我們現在來設計一個解決方案。我們先將那些一段時間內內容不會有什麽改變,但又遭大量的動態頁面生成靜態的頁面存放在伺服器上,當客戶端發出請求時,就讓他們直接我們生成的靜態頁面,過程如下圖。

客戶端顯示myPage.htm

客戶端

Execute

伺服器端的myPage.aspx

伺服器端的myPage.htm

現在我們需要一個後台程序來完成這些事情。

我們可將此做成一個類classAspxToHtml ,其代碼

using System;

using System.IO;

using System.Web.UI;

namespace LeoLu

{

/// summary

/// AspxToHtml 的摘要說明。

/// /summary

public class AspxToHtml

{

/// summary

/// Aspx文件url

/// /summary

public string strUrl;

/// summary

/// 生成html文件的保存路徑

/// /summary

public string strSavePath;

/// summary

/// 生成html文件的文件名

/// /summary

public string strSaveFile;

public AspxToHtml()

{

//

// TOD 在此處添加構造函數邏輯

//

}

/// summary

/// 將strUrl放到strSavePath目錄下,保存爲strSaveFile

/// /summary

/// returns是否成功/returns

public bool ExecAspxToHtml()

{

try

{

StringWriter strHTML = new StringWriter();

System.Web.UI.Page myPage = new Page(); //System.Web.UI.Page中有個Server對象,我們要利用一下它

myPage.Server.Execute(strUrl,strHTML);//將asp_net.aspx將在客戶段顯示的html內容讀到了strHTML中

StreamWriter sw = new StreamWriter(strSavePath+strSaveFile,true,System.Text.Encoding.GetEncoding("GB2312"));

//新建一個文件Test.htm,文件格式爲GB2312

sw.Write(strHTML.ToString()); //將strHTML中的字符寫到Test.htm中

strHTML.Close();//關閉StringWriter

sw.Close();//關閉StreamWriter

return true;

}

catch

{

return false;

}

}

/// summary

/// 將Url放到Path目錄下,保存爲FileName

/// /summary

/// param name="Url"aspx頁面url/param

/// param name="Path"生成html文件的保存路徑/param

/// param name="FileName"生成html文件的文件名/param

/// returns/returns

public bool ExecAspxToHtml(string Url,string Path,string FileName)

{

try

{

StringWriter strHTML = new StringWriter();

System.Web.UI.Page myPage = new Page(); //System.Web.UI.Page中有個Server對象,我們要利用一下它

myPage.Server.Execute(Url,strHTML); //將asp_net.aspx將在客戶段顯示的html內容讀到了strHTML中

StreamWriter sw = new StreamWriter(Path+FileName,true,System.Text.Encoding.GetEncoding("GB2312"));

//新建一個文件Test.htm,文件格式爲GB2312

sw.Write(strHTML.ToString()); //將strHTML中的字符寫到Test.htm中

strHTML.Close();//關閉StringWriter

sw.Close();//關閉StreamWriter

return true;

}

catch

{

return false;

}

}

}

}

方法A:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.IO;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(AspxToHtml("./admin/Default2.aspx",Server.MapPath("./index.html")));
}


/// <summary>
/// 將Url放到Path目錄下,保存爲FileName
/// </summary>
/// <param name="Url">aspx頁面url</param>
/// <param name="PathFileName">保存路徑和生成html文件名</param>
/// <returns></returns>
public bool AspxToHtml(string Url, string PathFileName)
{
try
{
StringWriter strHTML = new StringWriter();
System.Web.UI.Page myPage = new Page();//System.Web.UI.Page中有個Server對象,我們要利用一下它
myPage.Server.Execute(Url, strHTML);//將asp_net.aspx將在客戶段顯示的html內容讀到了strHTML中
//StreamWriter sw = new StreamWriter(PathFileName, false, System.Text.Encoding.GetEncoding("GB2312"));
StreamWriter sw = new StreamWriter(PathFileName, false, System.Text.Encoding.Default);
sw.Write(strHTML.ToString());//將strHTML中的字符寫到指定的文件中

strHTML.Close();
strHTML.Dispose();
sw.Close();
sw.Dispose();
return true;
}
catch
{
return false;
}
}


}

方法B:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
protected override void Render(HtmlTextWriter writer)
{
System.IO.StringWriter html = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter tw = new System.Web.UI.HtmlTextWriter(html);
base.Render(tw);
System.IO.StreamWriter sw;
sw = new System.IO.StreamWriter(Server.MapPath("Default.htm"), false, System.Text.Encoding.Default);
sw.Write(html.ToString());
sw.Close();
tw.Close();
Response.Write(html.ToString());
}

}

更多相關文章
  • QueryString是一種非常簡單的傳值方式,他可以將傳送的值顯示在浏覽器的地址欄中.如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法.但是對于傳遞數組或對象的話,就不能用這個方法了.下面是
  • Nginx用ngx_cache_purge模塊緩存加速 支持html僞靜態頁面
    本文我們來講講Nginx開啓fastcgi_cache緩存加速,利用ngx_cache_p
  • 本文章來給大家介紹在iis7下利用web.config 實現頁面僞靜態了,如果是iis6中我們必須使用urlRewriter 實現的僞靜態哦,下面我來介紹一下.在 IIS7中我們不再需要安裝其他組件,通過在 web.
  • php教程 僞靜態與php mysql教程 apache配置詳解配置過程:(一)http.conf 把php直接作爲apache的一個模塊運行,我在裏面加了兩句:loadmodule php5_module "e:/
  • 僞靜態設置可以說對搜索引擎會友好很多了,有人說僞靜態爲真正的靜態還要好,下面我就聽了這話來把一個discuz x2.5論壇設置整站爲僞靜態了,下面把例子與各位分享.一.discuz x2論壇首頁“最後發表”帖子鏈接靜態化現在還沒有找到完美的解決方法,不過通過這樣做還是基本實現我想要的形式,有兩種方法 ...
  • 在jsp動態include與靜態include區別呢,下面我整理了一些網友的經驗給各位同學參考一下,希望文章對各位有幫助.答:動態INCLUDE用jsp:include動作實現<jsp:include page="i
  • 前面我已寫過關于phpcms v9僞靜態的文章如何實現phpcms v9_4X版本tag的僞靜態? 這是需要分頁的僞靜態,接下來將再來一篇沒有分頁的Rss僞靜態實現.ss頁面的僞靜態實現目標設置前的URL:http://localhost/index.php?m=content&c=rss& ...
  • WordPress是一款php開源的cms系統了,它可以在任何的php環境下運行了,但是WordPress僞靜態規則就不一樣了,在不同環境下有所區別,如在IIS/Apache/Nginx都是不一樣的,那麽這個問題要如
一周排行