1. 使用场景
适用于服务器功能不强的web站点,不希望频繁通过读取数据库来展示内容,当有新的内容产生时,生成静态页面存放内容,数据库中只保留如标题,类别等一些查询关键字。
2. 使用静态页面的好处
(1)提高网站的访问速度
(2)减轻服务器负担
(3)利于搜索引擎抓取
3. ASP.NET生成静态页面的思路
(1)创建模板template.html文件,在里面定义一些特殊的字符串格式用于替换内容,如$htmlformat
(2)读取模板内容到指定对象中
(3)将特殊的字符串格式替换为你想要的内容
(4)创建新的静态页面,并将替换完标签的内容写入到文件中即可
4.实现
定义html模板文件"template.html",注意标签里内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <!--标题--> <div>$htmlformat[0]</div> <!--内容--> <div>$htmlformat[1]</div> </body> </html>
protected void Button1_Click(object sender, EventArgs e) { // 01.读取html模板 string template = ""; try { using (StreamReader sr = new StreamReader(Server.MapPath("template.html"))) { template = sr.ReadToEnd(); } } catch (Exception ex) { Response.Write(ex.Message); Response.Write("<script>alert('读取文件错误.')</script>"); } // 02.定义和html标记数目一致的数组并赋值 string[] format = new string[4]; format[0] = "这里是标题"; format[1] = "这里是内容"; // 03.替换html模板里的标签为实际想要的值 for (int i = 0; i < 4; i++) { template = template.Replace("$htmlformat[" + i + "]", format[i]); } // 04.生成html文件 try { using (StreamWriter sw = new StreamWriter(Server.MapPath("output.html"), false, Encoding.UTF8)) { sw.WriteLine(template); } Response.Write("<script>alert('已生成html文件.')</script>"); } catch { Response.Write("生成html文件失败."); } }