三种网页格式HTML、SHTML、ASPX比较

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于动态静态化页面(shtml)

1 个评论先谈一下本文会用到的三种网页格式,分别是HTML、SHTML、ASPX。它们各有特点:

HTML即为本文的主角:静态页面。如果浏览器从服务器上请求一个HTML页面,服务器把该页面原封不动地发送给浏览器。因此它的反应速度是最快的,而且对于cpu、内存等等的要求比较低。

ASPX是目前比较流行的动态网页格式。ASP .NET页面的扩展名为 .aspx。如果浏览器请求的是一个ASP .NET页面,服务器在把它回送到浏览器之前会处理页面中的所有可执行代码。动态网页的一个特点是信息交互、及时更新、页面文件少、开发速度比较快。但是它的一个严重的问题是在访问量比较大,而服务器的配置和资源比较有限的情况下,一些频繁的读写数据库、程序逻辑等等,会使得服务器负担不起而当机。

因此对于访问量比较大的网站,网页静态化是一个比较可靠的解决方案。但是静态页面重复的内容比较多,在信息量比较大的网站,全HTML可以说是无论对于开发者或者使用者,都是缺乏人性化的工作。例如我有一个显示内容的页面,它有左右两块,右边是文章内容,可能是长时间甚至永远不会变动的,左边是包含公告、新闻等的一些导航,更新速度比较快。那如果左边的公告有了新的内容,为了让每个页面的信息都准确,那所有的页面都要重新制作,这操作起来明显很不方便。于是就有了SHTML的存在。SHTML 的一个特点就是在服务器会做一定的预处理,使得它可以用include file的方式,把若干个文件包含进来。例如上例的页面,可以拆分为a.html和b.html,然后用c.shtml把这两个文件包含进来,那在更新的时候只需要更新a.html,而b.html不需要更新,这样可以减少大量的制作工作。可能动态网页就是根据这个而产生的。在中,这是最基本的控件思想。以下是c.shtml的页面代码:

因此,对于,可以采用输出shtml页面的方式,动态生成静态页面,来解决性能问题。如何动态生成静态页面,目前有两种主流的方式,一种是做一些静态页面模板,然后把内容填充替换,最后输出文件。一种是利用HtmlTextWriter重写AttributeCollection.Render。这两种方法都可以在网上搜到相关的文章。但是在这里我要引发更深入的问题:

1、静态页面怎么更新?能不能自动更新?

2、一些动态的元素,如登陆、搜索、访客,在静态页面中如何实现。

这里很可能就会用到ajax或者直接用Microsoft.XMLHTTP来做一些异步操作,最终可以解决上面的两个问题,但是以我的经验来说,总会觉得处理起来,特别别扭,特别艰难,很难保证能形成一种健壮的程序结构,以适应随时变化的客户需求。

因此,我们回归到,看aspx页面能不能给静态化一种解决方案,也就是我的目标:动态静态化。为此,先介绍作为这个思路的支持,需要用到的以下几个特点:

1、aspx支持类似shtml的的语法,如果一个aspx页面没有带代码,那它跟shtml和html的静态页面的速度和效果是基本一致的。

2、aspx支持前置代码,即完全不要aspx.cs的后置代码,只要在顶部把声明后置代码的那一段去掉,即<%@ Page Language="C#"%>用来声明文件。然后直接把代码写在页面:

这样代码就会执行,即不需要预先编译,动态编译。

3、aspx支持以ascx命名的各种用户控件。

有了以上三点的支持,我们就可以实现动态静态化。首先。按动态网站的开发方式,开发出一个网站。网站中的所有页面的内容都是由ascx的控件组成,.aspx中只有简单的html框架和用户控件引用。做一个页面或者一个winform工具实现以下静态发布功能:

1、录入ascx控件信息,包括引用路径、参数等等。

2、点击生成,则会自动将上面录入的控件信息,写入一个跟它同名的aspx页面上。访问这个动态生成的aspx页面,可以得到他生成的文本内容。

3、根据获得的文本内容,在指定目录下生成.html或者.txt文件。

4、自动或手动(页面比较复杂的用手动)把aspx页面中的这个ascx控件,改成的引用方式。

最后看一下结果:在开发环境下,依然是动态页面,一点都没有改变。这对于后期维护修改有很大的帮助。由于增加了一个静态发布的过程,在发布环境下,同是index.aspx的页面,会被全部或者部分改成包含文件的shtml的模式。然后由于是aspx页面,所以某些不需要静态化的控件功能可以继续正常使用。而所需

要做的工作就是在前期录入那些页面控件的相关信息,以后修改完,就直接按发布就完成。以上就解决了aspx中的静态化问题。

相关文档
最新文档