ASP.NET 静态化小记

最近看了些静态化的文章,比如真静态,伪静态的各种方法。但是比较有用的文章都比较分散,而且知识点讲述的也不一样,对于像我这种重操作的开发者来说,理论过多反而看的烦,最重要的是会做,才是真理。所有理论的东西我就不会讲述太多了,真的要看各种静态化的原理,推介去买相关的本书好好研究。

我总结了下我所知道的静态化的技术,比如使用组件Urlrewrite,比如自己重写httpHandler里的方法等等。。。。

第一种方法:先去下载个urlrewrite组件吧,解压包,把rewrite.dll引进项目,首先你在web.config里写入

<configSections>
       <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<httpModules>
       <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
</httpModules>

然后呢,你就要配置你的重写规则了下面是我以前项目里的一些规则配置,参考下,不一定适合你。

<RewriterConfig>
       <Rules>
         <RewriterRule>
           <LookFor>~/shwInfo/Jurisdiction_(\w{3})\.aspx</LookFor>
           <SendTo>~/En/Jurisdiction.aspx?jurid=$1</SendTo>
         </RewriterRule>         <RewriterRule>
           <LookFor>~/articles/(\d{1,})\.htm</LookFor>      <!-- 这个是被代替后的文件名,使用到正则表达式 -->
           <SendTo><![CDATA[~/En/article_view.aspx?article_id=$1]]></SendTo>      <!-- 这个是要给代替的网页,一般是带有问号后面带参数的网页 -->
         </RewriterRule>
         <RewriterRule>
           <LookFor>~/articles/(\d{1,})_(\d{1,})\.htms</LookFor>
           <SendTo><![CDATA[~/En/article_view.aspx?article_id=$1&page=$2]]></SendTo>
         </RewriterRule>
      </Rules>
</RewriterConfig>

不如我的一个页面路径是http://localhost/En/article_view.aspx?article_id=2那么就会被http://localhost/En/article/1.htm代替了。

做完这些呢,你还需要配置下你的iis把aspx页面的可执行文件路径改为html,并且把s检查文件是否存在的勾去掉就可以

第二种方法是真静态方法,是重写模板页的,代码写出来就参考下吧

显示页面write.aspx主要代码

<body style="width:500px; text-align:center;">
    <form id="form1" runat="server">
    <div>
      <table width="750px">
        <tr>
          <td colspan="4">文章信息</td>
        </tr>
        <tr>
          <td style="width:100px;">标题</td>
          <td style="text-align: left"><asp:TextBox ID="name"

runat="server"></asp:TextBox></td>
        </tr>
        <tr>
          <td style=" width:100px; height: 191px;">内容</td>
          <td style="height: 191px"><asp:TextBox ID="Msg" TextMode="multiline"

Columns="50" runat="server" Rows="10" Height="182px"

Width="631px"></asp:TextBox></td>
        </tr>
        <tr>
          <td colspan="4">
              <asp:Button ID="btn" runat="server" Text="添加"

OnClick="btn_Click" style="width: 40px" /></td>
        </tr>
      </table>
    </div>
    </form>
</body>

然后是write.aspx.cs代码

        protected void btn_Click(object sender, EventArgs e)
        {
            string title = this.name.Text;
            string content = this.Msg.Text;
            content = content.Replace("\n", "<br />");
            string Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            string FileName = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")
+ ".htm";
            OutputHtml(title, content, Time, FileName, "HtmlTemp.htm");
        }
        private void OutputHtml(string t1, string t2, string t3, string FName,string tempHtml)
        {
            string HtmlPath = String.Format(@"\Html\{0}", FName);
            string HtmlTemp = File.ReadAllText(Server.MapPath(".") +
@"\" + tempHtml, Encoding.UTF8);
            StringBuilder SBuilder = new StringBuilder(HtmlTemp);
            SBuilder.Replace("{AddTiTle}", t1);
            SBuilder.Replace("{AddContent}", t2);
            SBuilder.Replace("{AddTime}", t3);
            StreamWriter SWriter = File.CreateText(Server.MapPath(".") +
@"\Html\" + FName);
            SWriter.WriteLine(SBuilder.ToString());
            SWriter.Flush();
            SWriter.Close();
            Response.Redirect(HtmlPath);
        }

下面是模板页HtmlTemp.htm

 <body style="text-align:center;">
<table cellpadding="5" cellspacing="0" width="750px" border="2"> <!--此页面
用于网页静态化的模板,显示添加的信息-->

    <tr>
      <td align="center">{AddTiTle}</td>
    </tr>
    <tr>
      <td align="left">{AddContent}</td>
    </tr>
    <tr>
      <td align="right">
        发表时间:{AddTime}
      </td>
    </tr>
</table>
</body>

这样就可以了,如果需要用你可以优化一下,把生成的html路径保存到数据库中就可以了,其他就没什么了。

posted on 2010-05-21 16:54  注销账户  阅读(376)  评论(0编辑  收藏  举报

导航