在大型网站看到的很多的新闻。都是HTML的页面。这肯定是转化后得来的吧。不知道这样转化的思维是怎么样的呢?是将ASPX的html另存为一个新的HTML页,然后让客户直接连接这个HTML页呢?还是动态将ASPX在浏览器读取的时候转换成HTML后缀?又或者是什么方法呢?

解决方案 »

  1.   

    新闻一般都是生成的真实静态页面,至于如何生成嘛,我只知道asp的方式,不知道.net是不是也大同小异。
    php好像有种很奇妙的方法,可以直接获取buffer里的内容来生成静态,真是好玩。
      

  2.   

    一般是生成真实的页面,像url是这样的"www.***.com/2008/2/534313312.html"
    这就肯定是生成的,用.NET实现就必须重写Render事件using System;   
    using System.Data;   
    using System.Configuration;   
    using System.Web;   
    using System.Web.Security;   
    using System.Web.UI;   
    using System.Web.UI.HtmlControls;   
    using System.Web.UI.WebControls;   
    using System.Web.UI.WebControls.WebParts;   
    using System.IO;   
      
    public class FreezablePage : System.Web.UI.Page   
    {   
        private bool freeze = false;   
        private string newUrl;   
      
        protected void Freeze()   
        {   
            freeze = true;   
        }   
      
        protected void Freeze(string toUrl)   
        {   
            freeze = true;   
            NewUrl = toUrl;   
        }   
      
        internal string NewUrl   
        {   
            get { return newUrl; }   
            set { newUrl = value; }   
        }   
      
        protected override void Render(HtmlTextWriter writer)   
        {   
            if (freeze)   
            {   
                MyHtmlFileCreator htmlFile = new MyHtmlFileCreator();   
                base.Render(htmlFile.RenderHere);   
                newUrl = HttpContext.Current.Request.Url.AbsolutePath.ToString();   
                newUrl = newUrl.Replace(".aspx", ".htm");   
                htmlFile.WriteHTMLFile(Server.MapPath(newUrl));   
                Response.Redirect(newUrl, true);   
            }   
            else  
            {   
                base.Render(writer);   
            }   
        }   
    }   
      
    internal class MyHtmlFileCreator   
    {   
        private StringWriter html;   
        private HtmlTextWriter htmlWriter;   
      
        internal HtmlTextWriter RenderHere   
        {   
            get { return htmlWriter; }   
        }   
      
        internal MyHtmlFileCreator()   
        {   
            html = new StringWriter();   
            htmlWriter = new HtmlTextWriter(html);   
        }   
      
        internal void WriteHTMLFile(string virtualFileName)   
        {   
            StreamWriter fs = new StreamWriter(virtualFileName, false, System.Text.Encoding.UTF8);   
            fs.Write(html.ToString());   
            fs.Close();   
        }   
    }