静的ページを生成する3つの方法

2986 ワード

ウェブサイトを作る時、性能を高めるために、ASPを使う以外にNetページキャッシュに加えて、Webサイトのトップページを静的ページに生成することもできます.
静的ページを生成する方法はいくつかありますが、ここでは2つを紹介します.
  • テンプレート法
  • Pageを書き換えるRenderメソッド(このメソッドは「孟子E」)
  • ASP.Net 2.0のHttpRequest.SaveAsメソッド.

  • 1.テンプレート法のくだらない話は言わないで、経典の実現方法で、直接コードを放します:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using System.Text;
    
    namespace menutest
    {
      /// <summary>
      /// Conn      。
      /// </summary>
      // by kyo
      //                
      public class Conn
      {
       public Conn()
       {
       
       }
       public static bool WriteFile(string strText,string strContent,string strAuthor)
       {
        string path = HttpContext.Current.Server.MapPath("/menutest/");
        Encoding code = Encoding.GetEncoding("gb2312");
        //       
        string temp = HttpContext.Current.Server.MapPath("/menutest/news/text.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();
         sr.Close();
        }
     
     
        //string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";
        string htmlfilename="kyo.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();
        }
        finally
        {
         sw.Close();
        }
        return true;
       }
      }
    }
    //     System.IO         ,   Replace         ,    html.
    

    2.Render法の書き換え
    関数はPageを再ロードしました.Render関数は、ページのHTMLテキストを切り取ってファイルに保存する役割を果たし、さらにASPを見ることができます.Netページライフプロセス.コードは次のとおりです.
    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("      !");
    }

    以上の関数数を静太ファイルを生成するページに加算します.
    3.テンプレート法
    ASP.NET 2.0では、ASP.NETで生成されたHTMLコードを処理したり、静的ファイルとして保存したりします.ASP.NETは要求を直接ファイルに保存する方法を提供する:HttpRequest.SaveAsメソッド.