黑马程序员——生成html静态页面,方便seo,加快加载速度
---------------------- Windows Phone 7手機開發(fā)、.Net培訓、期待與您交流! ----------------------
? ? 這幾日,同學問我怎樣將動態(tài)頁面直接生車靜態(tài)的html頁面,我想了想以前做過這個,今天把方法做個總結。
? ? 我所知道的生成靜態(tài)頁面的方法有兩種,當然其他方法還有很多,我比較了解的是模板生成和地址映射。
? ? 第一種模板生成:模板生成其實就死定義一個靜態(tài)的html模板,然后將里面的關鍵字替換掉。例如:
? ??<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN"?>
<HTML>
<HEAD>
??<title>$ShowArticle</title>
???<body>
biaoti
<br>
$content<br>
author
</body>
</HTML>
$biaoti
<br>
$content<br>
$author
</body>
</HTML>?
然后用字符替換將關鍵字替換成動態(tài)的內容,輸出html文件,這種方法靈活度太差,如果一個站點的網頁形式千變萬化,增刪改查特別頻繁,那么這種方法就顯得無能為力了。
第二種方法地址映射,這種方法就把以上的缺點全都克服掉了。直接輸入地址 生成靜態(tài)。生成的靜態(tài) 頁面和動態(tài)頁面一模一樣。
代碼:
public static string ExecAspxToHtml(string Url, string Path, string FileName)//參數(shù):動態(tài)頁面的地址,生成靜態(tài)html的地址,html文件的名字
{
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, false, System.Text.Encoding.GetEncoding("GB2312"));
//新建一個文件Test.htm,文件格式為GB2312
sw.Write(strHTML.ToString()); //將strHTML中的字符寫到Test.htm中
strHTML.Close(); //關閉StringWriter
sw.Close(); //關閉StreamWriter
return "生成成功";
}
catch (Exception ex)
{
return ex.ToString();
}
}
調用此方法
if (File.Exists(Server.MapPath("../") + "chanpin.aspx"))
{
tohtml.ExecAspxToHtml("../chanpin.aspx", Server.MapPath("../"), "chanpin.html");
}
就是這樣就會自動生成靜態(tài)頁面html,方便吧,但是這種方法再用的時候一定要注意生成靜態(tài)html后的鏈接,因為當你生成html后它原來的鏈接都是.aspx頁面而現(xiàn)在都變成了html頁面,所以還要在生成靜態(tài)的時候過濾一下鏈接:
private string ReplaceStr(Match m)
{
return m.Value + ".html";
}
StreamReader sr = new StreamReader(Server.MapPath("../chanpin.html"), code);
?string html = sr.ReadToEnd();
html = html.Replace("cp_read.aspx?cpid=", "cpread/cp_read");
Regex reg = new Regex(@"(?is)(?<=<a\s?href[^>].*?)cpread/cp_read[\d]+");
html = reg.Replace(html, ReplaceStr);
sr.Dispose();
sr.Close();
StreamWriter sw = new StreamWriter(Server.MapPath("../chanpin.html"), false, code);
sw.Write(html);
sw.Flush();
sw.Close();
好就是這樣差不多就完成了,可能還會遇到其他問題,想辦法自己解決吧。
---------------------- Windows Phone 7手機開發(fā)、.Net培訓、期待與您交流! ----------------------
轉載于:https://www.cnblogs.com/weiwin/archive/2012/06/30/2570856.html
總結
以上是生活随笔為你收集整理的黑马程序员——生成html静态页面,方便seo,加快加载速度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018京东白条激活失败是什么原因?解决
- 下一篇: 京东小金卡可以透支吗?主要特点有这些