ASP.Net静的HTMLページの生成
7819 ワード
ダイナミックウェブ開発技術では,ウェブサイトのメンテナンス作業量を低減するために,ダイナミックページ技術が用いられることが多い.現在、インターネット上で流行している方法は、ウェブサイトで常に更新する必要があるデータをデータベースに保存することであり、クライアントブラウザがサーバにHTTP要求を発行すると、サーバはプログラムを実行、解釈することによって、実行結果をHTML形式でクライアントブラウザに転送し、クライアントブラウザは受信、解釈、表示する.しかし、サーバは、これらのプログラムを実行する際に、通常、データベースからレコードをクエリーして読み出す[1].これらの操作は、効率を代価としている.サーバ側がプログラムを実行する際に、データベース内のデータをクエリーして読み取るため、このようなHTMLフォーマットコードを生成する過程は明らかにサーバリソースを消費する必要があり、データベースに記録される増加に伴い、アクセス量の大きいサイトにとってサーバの負荷が過重になる場合がある.
静的ページでは、ページ自体がHTML静的ファイルであるため、ブラウザはこのようなページにアクセスする際に、これらの静的ファイルのHTMLコードをサーバ側からクライアントブラウザに直接渡せばよい.したがって,アクセス速度では,静的ページは動的ページよりはるかに速い.しかし、静的ページの柔軟性が劣っているため、データベースや他のデバイスを利用して関連情報を保存しないと、編集の修正や閲覧権限の制限など、全体的な管理が煩雑になりますが、私たちが頻繁に使用しているファイル、例えば私たちが開発したニュース配信システムでは、多くのユーザーがデータベースを読み取って結果を表示することを望んでいません.このような面では、サーバのリソースを消費しています.一方、閲覧者の多くの貴重な応答時間を占めているため、動的なページを「静的ページ化」する方法があり、現在多くのサイトがこのような技術(新浪、網易、捜狐などの大手サイト)を採用しているが、これらの静的なページは明らかに1ページ1ページ手作りではない.では、より良い解決策があるだろうか.
このような問題を解決するには、一般的にウェブサイトの管理バックグラウンドにウェブページ情報パブリケーションプログラムがあり、ウェブサイトのコンテンツ管理者がウェブページを追加する際に、バックグラウンドを管理するウェブページ情報パブリケーションプログラムを直接利用してページをHTML静的ファイルに保存し、このページは最終的な結果から静的であるが、動的技術によって生成される.
主な手順:
1、テンプレートhtmlページの作成
2、ioストリームを使用して、テンプレートページに基づいて静的htmlを作成する
テンプレートhtmlページを作成するには、次の手順に従います.
Helperクラスを作成します.WriteFileメソッドがあります.
次に、静的htmlを作成する必要があるページで上記の方法を呼び出すだけでよい.例:bool result=Helper.WriteFile(this.txtBiaoti.Text.Trim(), this.txtContent.Text.Trim(), this.txtAuthor.Text.Trim());if(result){Response.Write("HTML生成成功!");}else{Response.Write("HTML生成失敗!"); }
静的ページでは、ページ自体がHTML静的ファイルであるため、ブラウザはこのようなページにアクセスする際に、これらの静的ファイルのHTMLコードをサーバ側からクライアントブラウザに直接渡せばよい.したがって,アクセス速度では,静的ページは動的ページよりはるかに速い.しかし、静的ページの柔軟性が劣っているため、データベースや他のデバイスを利用して関連情報を保存しないと、編集の修正や閲覧権限の制限など、全体的な管理が煩雑になりますが、私たちが頻繁に使用しているファイル、例えば私たちが開発したニュース配信システムでは、多くのユーザーがデータベースを読み取って結果を表示することを望んでいません.このような面では、サーバのリソースを消費しています.一方、閲覧者の多くの貴重な応答時間を占めているため、動的なページを「静的ページ化」する方法があり、現在多くのサイトがこのような技術(新浪、網易、捜狐などの大手サイト)を採用しているが、これらの静的なページは明らかに1ページ1ページ手作りではない.では、より良い解決策があるだろうか.
このような問題を解決するには、一般的にウェブサイトの管理バックグラウンドにウェブページ情報パブリケーションプログラムがあり、ウェブサイトのコンテンツ管理者がウェブページを追加する際に、バックグラウンドを管理するウェブページ情報パブリケーションプログラムを直接利用してページをHTML静的ファイルに保存し、このページは最終的な結果から静的であるが、動的技術によって生成される.
主な手順:
1、テンプレートhtmlページの作成
2、ioストリームを使用して、テンプレートページに基づいて静的htmlを作成する
テンプレートhtmlページを作成するには、次の手順に従います.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<title>ShowArticle</title>
<body>
biaoti
<br>
content<br>
author
</body>
</HTML>
Helperクラスを作成します.WriteFileメソッドがあります.
public class Helper
{
public static bool WriteFile(string strText, string strContent, string strAuthor)
{
string path = HttpContext.Current.Server.MapPath("~/news/");
Encoding code = Encoding.GetEncoding("UTF-8");
//
string temp = HttpContext.Current.Server.MapPath("~/news/template.html");
StreamReader sr = null;
StreamWriter sw = null;
string str = "";
try
{
sr = new StreamReader(temp, code);
str = sr.ReadToEnd(); //
}
catch (Exception exp)
{
HttpContext.Current.Response.Write(exp.Message);
HttpContext.Current.Response.End();
return false;
}
finally
{
sr.Close();
}
string htmlfilename = DateTime.Now.ToString("yyyyMMddHHmmss") + ".html";
//
// , str
str = str.Replace("ShowArticle", strText); // ShowArticle
str = str.Replace("biaoti", strText);
str = str.Replace("content", strContent);
str = str.Replace("author", strAuthor);
//
try
{
sw = new StreamWriter(path + htmlfilename, false, code);
sw.Write(str);
sw.Flush();
}
catch (Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
HttpContext.Current.Response.End();
return false;
}
finally
{
sw.Close();
}
return true;
}
}
次に、静的htmlを作成する必要があるページで上記の方法を呼び出すだけでよい.例:bool result=Helper.WriteFile(this.txtBiaoti.Text.Trim(), this.txtContent.Text.Trim(), this.txtAuthor.Text.Trim());if(result){Response.Write("HTML生成成功!");}else{Response.Write("HTML生成失敗!"); }