我想提高我的网站访问速度,所以想把整个网站的页面生成html文件 请教各位高手 能不能给个例子  给我看看! 谢谢!

解决方案 »

  1.   

    我想在后台做一个功能 实现全部自动生成Html 
      

  2.   

    在长期不需要更新数据的时候可以生成html 如果需要更新数据就再重新生成一遍就好了 不知道这有可以么?
      

  3.   

       可以的吧  我就是这么做的    我都是修改了页面就重新生成那个html 
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using LTP.Common;/// <summary>
    /// staticPage 的摘要说明
    /// 页面静态处理
    /// </summary>
    public class staticPage : Page
    {
        public staticPage()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }    private DataTable dt;
        //自动生成页面开始//
        protected override void OnPreInit(EventArgs e)
        {          
            try
            {
                string stType = Request.QueryString["type"] == null ? "main" : Request.QueryString["type"].ToString();
                string stID = Request.QueryString["id"] == null ? "" : Request.QueryString["id"].ToString();
                string stPath = Request.QueryString["type"] == null ? "" : Request.QueryString["type"].ToString();
                                           string P = System.IO.Path.GetFileName((this.Page.Request.PhysicalPath.ToString()).ToLower()).Replace(".aspx", "");            string str = string.Empty;
                if (stType == "main")
                {
                    str =  StringPlus.ReplaceChar(P) + ".html";
                }
                else
                {
                    str = StringPlus.ReplaceChar(P) + "/JoinDetails" + stID + ".html";
                }
                //string str = P + ".html";
                string Path = Server.MapPath(str);            System.IO.FileInfo aFileInfo = new System.IO.FileInfo(Path);
                if (aFileInfo.Exists)
                {
                    TimeSpan M = System.DateTime.Now - aFileInfo.LastWriteTime;
                    if (M.TotalSeconds > 1)
                        aFileInfo.Delete();
                    else
                        Server.Transfer(str, true);
                    //    Server.Transfer("index.html", true);
                }
                base.OnPreInit(e);
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message.ToString());
                //Public.Constant.Show(this, ex.Message.ToString());
                //JS.WebError(@Page.Server.MapPath("~/index.aspx"), ex.Message.ToString(), Page.Title+" Static Error!");
            }
        }    protected override void OnInitComplete(EventArgs e)
        {
           
            try
            {            /*
                DmPagekey mdKeys = new DmPagekey();
                IfPagekey dfKeys = new IfPagekey();
                string pageName=  System.IO.Path.GetFileName((this.Page.Request.PhysicalPath.ToString()).ToLower());            mdKeys = dfKeys.GetPagekeyInfo(pageName);            if (pageName.Length >= 1)
                {
                    if (mdKeys != null)
                    {
                        Page.Title = mdKeys.pageTitle;                    //Description
                        HtmlMeta desc = new HtmlMeta();
                        desc.Name = "Description";
                        desc.Content = mdKeys.pageDescription;
                        if (desc != null)
                        {
                            //hhead.Controls.Add(desc);
                            Page.Header.Controls.Add(desc);
                        }
                        //Keyword
                        HtmlMeta keywords = new HtmlMeta();
                        keywords.Name = "keywords";
                        keywords.Content = mdKeys.pageKeyWords;
                        if (keywords != null)
                        {
                            Page.Header.Controls.Add(keywords);
                        }
                    }
                }*/
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message.ToString());
                //Public.Constant.Show(this, ex.Message.ToString());
            }        base.OnInitComplete(e);
        }    protected override void Render(HtmlTextWriter writer)
        {        try
            {
                string stType = Request.QueryString["type"] == null ? "main" : Request.QueryString["type"].ToString();
                string stID = Request.QueryString["id"] == null ? "" : Request.QueryString["id"].ToString();
                string stPath = Request.QueryString["type"] == null ? "" : Request.QueryString["type"].ToString();            string P = System.IO.Path.GetFileName((this.Page.Request.PhysicalPath.ToString()).ToLower()).Replace(".aspx", "");
                //string pp = this.Page.Request.RawUrl.ToString();
                string str = string.Empty;
                if (stType == "main")
                {
                    str = StringPlus.ReplaceChar(P) + ".html";
                }
                else
                {                str = StringPlus.ReplaceChar(P) + "/JoinDetails" + stID + ".html";
                }
                string Path = Server.MapPath(str);
                //string Path = Server.MapPath("index.html");
                System.IO.StringWriter html = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter tw = new System.Web.UI.HtmlTextWriter(html);
                base.Render(tw);
                System.IO.StreamWriter sw = new System.IO.StreamWriter(Path, false, System.Text.Encoding.UTF8);
                string Temp = html.ToString();
                string s1 = "", s2 = "", s3 = "", s4 = "";
                int i = 0;
                int j = 0;            i = Temp.IndexOf("<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\"");            if (i > 0)
                {
                    j = Temp.IndexOf(">", i);                s1 = Temp.Substring(0, i);                s2 = Temp.Substring(j + 1, Temp.Length - j - 1);
                }
                i = s2.IndexOf("<input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\"");
                if (i > 0)
                {
                    // if __EVENTVALIDATION exist
                    i = s2.Remove(i).LastIndexOf("<div>");
                    j = s2.IndexOf("</div>", i);                s3 = s2.Substring(0, i);                s4 = s2.Substring(j + 6, s2.Length - j - 6);
                     
                    /*
                     * 
                    j = s2.IndexOf(">", i);
                    s3 = s2.Substring(0, i);
                    s4 = s2.Substring(j + 1, s2.Length - j - 1);
                    */
                    Temp = s1 + s3 + s4;
                }
                else
                {
                    Temp = s1 + s2;
                }            //Temp = Temp.Replace("src=\"images/", "src=\"http://www.ignworld.com/images/");            sw.Write(Temp);
                sw.Close();
                tw.Close();
                Response.Write(Temp);
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message.ToString());
            }
        }    public void initSelection(HtmlSelect hSelect, int intCount)
        {
            for (int i = 1; i <= intCount; i++)
            {
                hSelect.Items.Add(new ListItem(i.ToString(), i.ToString()));
            }
        }
    }
      

  4.   

      只要继承这个类就可以了,  后台在写个生成的功能 就是访问aspx就生成html 了你可以直接访问继承的.aspx  他就会自动生成html      希望对你有用 我是菜鸟 多交流
      

  5.   

    可用模板或urlrewriter静态化
    public static bool WriteFile(string strText,string strContent,string strAuthor)  
      {  
      string path = HttpContext.Current.Server.MapPath("/news/");  
      Encoding code = Encoding.GetEncoding("gb2312");  
      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();  
      sr.Close();  
      }  public static string getUrltoHtml(string Url)  
    {  
    errorMsg = "";  
    try  
    {  
    System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);  
    System.Net.WebResponse wResp =wReq.GetResponse();  
    System.IO.Stream respStream = wResp.GetResponseStream();  
    System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312"));  
    return reader.ReadToEnd();  
    }  
    catch(System.Exception ex)  
    {  
    errorMsg = ex.Message ;  
    }  
    return "";  
    }  
    http://topic.csdn.net/u/20091205/11/9232ccc9-e012-4afb-98ff-db3810352af9.html
      

  6.   

    urlrewriter静态化是伪静态化,达不到提高打开网页速度的目的
      

  7.   

    可以手动生成HTML 啊 数据更新了就生成
      

  8.   

    不知道伪静态和生产静态有啥区别,我现在也在为这个头疼呢,那个大虾有好的方法发给我啊,拜托了,邮箱:[email protected]