动态网页开发技术中,为了降低网站维护的工作量,常常用到动态页面技术。目前因特网上流行的做法是将网站中需要经常更新的数据存放到数据库中,当客户端浏览器向服务器发出HTTP请求时,服务器通过执行、解释某个程序,将运行结果以HTML格式传送至客户端浏览器,客户端浏览器接收、解释并显示。但服务器在执行这些程序时一般都要从数据库中查询并读取记录[1],这些操作都是以效率作为代价的。因为服务器端在执行程序时,查询、读取数据库中的数据,再生成这种HTML格式代码的过程显然需要消耗服务器资源,随着数据库中记录的不断增加,对访问量较大的网站来说会出现服务器的负担过重的情况。

对于静态页面来说,由于其页面本身存储的就是HTML静态文件,浏览器在访问这样的页面时,直接从服务器端把这些静态文件中的HTML代码传递到客户端浏览器即可。因此,在访问速度上,静态页面要比动态页面快很多。但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比修改编辑、阅读权限限制等,但是,对于一些我们经常频繁使用的文件,例如我们开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所以,就有了把动态网页“静态页面化”的做法,当前很多网站都采用这种技术(新浪、网易、搜狐等大型网站),这些静态页面显然不是一页一页手工做成的,那么,能否有更好的解决办法呢?

要解决这样的问题,一般都在网站的管理后台有一个网页信息发布程序,在网站内容管理员添加网页时直接利用管理后台的网页信息发布程序把页面存成HTML静态文件,这种页面从最终的结果来看是静态的,但它是通过动态技术生成的。

主要步骤:

1、创建模版html页

2、使用io流,根据模版页创建静态html

创建模版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>
<title>ShowArticle</title> <body> biaoti
<br>
content<br>
author
</body>
</HTML>

创建一个Helper类,里面有个WriteFile方法:

public class Helper
{
public static bool WriteFile(string strText, string strContent, string strAuthor)
{
string path = HttpContext.Current.Server.MapPath("~/news/");
Encoding code = Encoding.GetEncoding("UTF-8");
// 读取模板文件
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();
return false;
}
finally
{
sr.Close();
} string htmlfilename = DateTime.Now.ToString("yyyyMMddHHmmss") + ".html";
// 替换内容
// 这时,模板文件已经读入到名称为str的变量中了
str = str.Replace("ShowArticle", strText); //模板页中的ShowArticle
str = str.Replace("biaoti", strText);
str = str.Replace("content", strContent);
str = str.Replace("author", strAuthor);
// 写文件
try
{
sw = new StreamWriter(path + htmlfilename, false, code);
sw.Write(str);
sw.Flush();
}
catch (Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
HttpContext.Current.Response.End();
return false;
}
finally
{
sw.Close();
}
return true;
}
}

接下来只要在需要创建静态html的页面中调用上面的方法就可以了。例如:
   bool result = Helper.WriteFile(this.txtBiaoti.Text.Trim(), this.txtContent.Text.Trim(), this.txtAuthor.Text.Trim());
        if (result)
        {
            Response.Write("HTML生成成功!");
        }
        else
        {
            Response.Write("HTML生成失败!");
        }

ASP.Net生成静态HTML页的更多相关文章

  1. Asp.net 生成静态页面

    http://www.cnblogs.com/tonycall/archive/2009/07/18/1526079.html Asp.net 生成静态页面(简单用法) 第一次发表,有什么错误,请大家 ...

  2. Asp.net生成静态网页的实现代码

    现在做程序都要将动态的页面转换成静态页面,今天教大家在ASP.NET 中实现静态页面的生成方法. using System;  using System.Data;  using System.Con ...

  3. .net 生成 静态页面

    .net 生成 静态页面 <!--Main.Aspx--> <%@ page language="C#" %> <%@ import namespac ...

  4. .NET生成静态页面例子

    主要做法如下: 1.创建网站,并创建一个模板页,template.htm 2.添加一个web窗体Default.aspx 3.在网站下新建文件夹htm,设置该文件夹的属性,确保该文件夹具有可写权限 详 ...

  5. 三种C#.net生成静态页面的方法

    ASP.NET生成静态页面方法主要有三种   第一种方法:向服务器的动态页面发送请求,获取页面的html代码.这种方法缺点显而易见:速度慢.另外如果请求的动态页面有验证控件的话,返回的html页面却无 ...

  6. 解决Apache下生成静态页面乱码的问题

    我的空间存放在阿里云,服务器默认Apache编码设置为utf-8,而新的网站珠宝招聘网http://hr.izuans.com 采用GB2312编码,其他程序文件都OK,就是生成静态新闻页和其他单页面 ...

  7. ASP.NET MVC 解析模板生成静态页一(RazorEngine)

    简述 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法 ...

  8. ASP.NET MVC 利用Razor引擎生成静态页

    实现原理及步骤: 1.通过ViewEngines.Engines.FindView查找到对应的视图,如果是部分视图,则用:ViewEngines.Engines.FindPartialView: 2. ...

  9. 比较ASP生成静态HTML文件的几种方法

    将动态页面转换生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录(特别是对接受动态参数的页面).前台访问时,脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度. 当然,凡事 ...

随机推荐

  1. eclipse 创建 maven 项目时如何修改 web 的版本和 jdk 的版本

    eclipse 创建 maven 项目时如何修改 web 的版本和 jdk 的版本 在使用 eclipse 创建 maven 项目的时候,默认的 web.xml 的版本时 2.3,默认 jre 的版本 ...

  2. Spark 源码解析 : DAGScheduler中的DAG划分与提交

    一.Spark 运行架构 Spark 运行架构如下图: 各个RDD之间存在着依赖关系,这些依赖关系形成有向无环图DAG,DAGScheduler对这些依赖关系形成的DAG,进行Stage划分,划分的规 ...

  3. IDA问题相关

    1.当想使用F5时出现“please position the cursor within a function”,那么就创建函数,但是创建时出现“The function has undefined ...

  4. keil中的memory model

    这两天仿真遇到的怪事真的是一大堆. 还是读写Flash的代码.keil编译OK,但是仿真就是莫名其妙地挂掉出现一些乱七八糟的事情. 后面发现是keil 中的memory model勾选错了,勾选的是l ...

  5. 深入理解javascript函数系列第一篇

    前面的话 函数对任何一门语言来说都是核心的概念.通过函数可以封装任意多条语句,而且可以在任何地方.任何时候调用执行.在javascript里,函数即对象,程序可以随意操控它们.函数可以嵌套在其他函数中 ...

  6. 【BIT套主席树】COGS257-动态排名系统

    题意同BZOJ1901,多组数据,数据范围也不一样.重新写一遍复习一下. #include<iostream> #include<cstdio> #include<cst ...

  7. python开发_python代码风格(coding style)

    我们要做python开发,我想python中的代码风格我们有必要了解一下 这样对我们自己和他们所编写的代码都有好处的. 下面是8点重要代码风格注意事项: ONE : Use 4-space inden ...

  8. maven构建jar包

    1.执行可执行的class,代码内需要有入口main方法 2.通过mvn package来构建jar包 3.使用java -jar test.jar来执行jar包 https://www.cnblog ...

  9. arguments对象与Rest参数

    JavaScript函数可以使用任意数量的参数.与其他语言(如C#和Java)不同,你可以在调用JavaScript函数时传递任意数量的参数.JavaScript函数允许未知数量的函数参数.在ECMA ...

  10. CentOS 6.9下的iptables在本机用DNAT转发指定IP到内网IP无效的问题解决(127.0.0.1)

    比如: iptables -t nat -A OUTPUT -p tcp -d 192.168.1.0/24 --dport 2222 -j DNAT --to-destination 127.0.0 ...