关于网页静态化的说明

来源:互联网 发布:网络上下其手的意思 编辑:程序博客网 时间:2024/06/06 15:51
一、网页静态化的意义:
  1.减少响应用户请求的数据传输量(传递HTML数据,无需服务器再解析);
  2.增加搜索引擎收录的机会(搜索引擎容易将静态网页收入)。
二、ASP.Net静态化方法说明(html.cs代码如下)
  1.获取目录信息
 包括:模板页名称及所在目录、生成文件的名称及所在目录;
 难点:获取当前项目的路径
   有当前项目的路径拼接模板页或者生成文件的路径可以比较方便的控制文件的位置和后期   显示时文件的URL地址;
 解决方法:Request.PhysicalApplicationPath.ToString()可以取得本解决方案在本地的   绝对路径。
  2.读取模板页,形成备用数据流
 将上一步获得的模板页路径提出,并读取它的内容封装进一个StringBuilser中;
 取得用户输入的替换参数列表用StringBuilder.Append()替换掉旧参数;
 保存新生成的StringBuilder备用。
  3.将StringBuilder写入指定目录下的文件中,操作完成。
  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. //using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. using System.IO;
  11. using System.Text;
  12. /// <summary>
  13. /// 功能:生成静态页
  14. /// 时间:2008-9-9
  15. /// </summary>
  16. public class html
  17. {
  18.     /// <summary>
  19.     /// 生成静态页
  20.     /// </summary>
  21.     /// <param name="dir">静态页的存放文件夹(绝对路径如:“C:/a/b/”)</param>
  22.     /// <param name="tem">模板页地址</param>
  23.     /// <param name="key">需要替换的标识和内容</param>
  24.     /// <param name="htmlName">生成的 Html 文件名</param>
  25.     /// <returns>成功返回:"1";否则返回异常信息</returns>
  26.     public static string SChtml(string dir, string tem, string[,] key, string htmlName)
  27.     {       
  28. //        try
  29. //        {
  30.             StringBuilder strhtml = new StringBuilder();
  31.             //创建StreamReader对象
  32.             using (StreamReader sr = new StreamReader(tem, Encoding.GetEncoding("gb2312")))
  33.             {
  34.                 String oneline;
  35.                 //读取指定的HTML文件模板
  36.                 while ((oneline = sr.ReadLine()) != null)
  37.                 {
  38.                     strhtml.Append(oneline + "/r/n");
  39.                 }
  40.                 sr.Close();
  41.             }
  42.             // 替换填充内容
  43.             for (int i = 0; i < key.Length / 2; i++)
  44.             {
  45.                 strhtml = strhtml.Replace(key[i, 0], key[i, 1]);
  46.             }
  47.             //操作文本框
  48.             if (!Directory.Exists(dir))
  49.             {
  50.                 Directory.CreateDirectory(dir);//用来生成文件夹
  51.             }
  52.             //创建一个空文件
  53.             string FilePath = dir + htmlName;
  54.             FileInfo finfo = new FileInfo(FilePath);
  55.             //以打开或者写入的形式创建文件流
  56.             using (FileStream fs = finfo.OpenWrite())
  57.             {
  58.                 //根据上面创建的文件流创建写数据流
  59.                 StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
  60.                 //把新的内容写到创建的HTML页面中
  61.                 sw.WriteLine(strhtml);
  62.                 sw.Flush();
  63.                 sw.Close();
  64.             }
  65.             return "1";
  66. //        }
  67. //        catch (Exception ex)
  68. //        {
  69. //            return (ex.Message);
  70. //        }
  71.     }
  72.     /// <summary>
  73.     /// 静态页的存放文件夹格式
  74.     /// </summary>
  75.     public enum HtmlDir { yyMMdd, yyyy_MM, yyyy_MM_dd,qita};
  76.     /// <summary>
  77.     /// 根据一定格式返回需要生成的文件夹路径
  78.     /// </summary>
  79.     /// <param name="dir">文件夹格式</param>
  80.     /// <returns>返回文件夹路径</returns>
  81.     public static string CreDir(HtmlDir dir)
  82.     {
  83.         switch (dir)
  84.         {
  85.             case HtmlDir.yyMMdd:
  86.                 {
  87.                     return "/" + DateTime.Now.ToString("yyMMdd") + "/";
  88.                 }
  89.             case HtmlDir.yyyy_MM:
  90.                 {
  91.                     return "/" + DateTime.Now.ToString("yyyy") + "/" + DateTime.Now.ToString("MM") + "/";
  92.                 }
  93.             case HtmlDir.yyyy_MM_dd:
  94.                 {
  95.                     return "/" + DateTime.Now.ToString("yyyy") + "/" + DateTime.Now.ToString("MM") + "/" + DateTime.Now.ToString("dd") + "/";
  96.                 }
  97.             default :
  98.                 return "/";
  99.         }
  100.     }
  101.     //// 生成静态页(class:html)测试
  102.     //string htmlName = "test.html";  
  103.     //// 先确定html文件名,是需要传入的:htmlName
  104.     //string htmlDir = html.CreDir(html.HtmlDir.yyyy_MM_dd);   
  105.     //// 再确定由年月日组成的文件夹
  106.     //string DirPath = Request.PhysicalApplicationPath.ToString() + "/news";   
  107.     //// 根目录
  108.     //string PathhtmlDir = DirPath + htmlDir; 
  109.     //// 需要传入的:dir
  110.     //string DirhtmlName = htmlDir + htmlName; 
  111.     //// 是需要存入数据库的路径和文件名
  112.     //string[,] key = new string[1, 2];
  113.     //key[0, 0] = "$Title";
  114.     //key[0, 1] = "生成静态页测试";
  115.     //string pd = html.SChtml(PathhtmlDir, Request.PhysicalApplicationPath.ToString() + "/admin/infor/template.html", key, htmlName);
  116.     //Response.Write(pd);
  117. }
原创粉丝点击