将动态aspx页面转换成为静态html页面的几种方法
1. 模版法
该方法历史悠久,具体处理流程为采用一个html模版,将其中的关键字替换为我们希望的信息。
优点:
缺点: 所有的信息都要采取字符串批凑的方式来实现,比如需要一个列表,就需要拼凑字符串。问题是开发周期长,可扩展性非常差,而且不易维护,难修改。
文章参考:
Asp.NET 生成静态页
http://www.codefans.com/ArticleView/Article_6691.html
2. 截取Control.Render()中的HtmlTextWriter的数据。
优点:
该方法比较方便而且灵活,在开发中不必顾虑动态和静态页面的统一处理模式。基本上按照动态页面的处理过程处理就Ok了。
并可在转换为静态html页面的时候过滤掉一些多余的数据及在适当的地方插入数据。
数据插入可考虑采取在静态页面中做标记的处理方式,如<!—Content Beginà一些正文<!--Content End --> ,采取判断<!-- Content End -->标记的方式将需要加入的数据加入到该标记的前面,也可利用该方法替换掉一些在动态页面中做好<!-- -->标记的原本用于动态回发等处理的逻辑。
文章参照:
How to freeze a dynamic aspx page into a static html page (on the server).
http://30649.aspx.codebetter.com/blogs/peter.van.ooijen/archive/2004/11/01/30649.aspx
方案架构一:
l 通过一个动态aspx转换html生成器页面来负责生成静态的页面。针对帖子Topic和论坛列表都有各自的Generator程序。Generator程序为aspx类型!执行时,将通过一定的验证模式验证操作是否合法。
l 通过一个后台线程或者Windows服务来跟踪数据库中已经标记好的尚未生成或者已经更新的但是也尚未静态化的数据列表,通过WebRequest来访问静态页面生成器程序,通过一定的参数形式将欲生成的数据标识和生成动作通知给生成器Generator。
l Generator验证请求是否合法,然后执行生成动作,将动态网页生成为静态html页面。
方案架构二:
l 论坛下的大部分动态aspx页面其实都继承自一个页面生成器基类,该基类正常状态下是不激活的。该基类含有能够生成静态html的操作函数。
l 通过一个后台线程或者Windows服务来跟踪数据库中已经创建或更新的数据,根据数据的内容通过WebRequest来访问动态网页的内容,并加上特殊的启动生成器基类生成数据的标记(该标记可为加密的验证逻辑)。
l 动态页面根据请求启动生成html的功能,通过指定的处理类将相应的静态文件生成到与其路径完全相同的路径下。
如处理TopicView.aspx的生成静态html的类通过TopicViewHtmlGenerator类来处理。
l 该架构设计灵感参照淘宝的架构而来。
静态页面:
动态页面:
l 该架构的优点:
与动态网页结合,开发上的顾虑减轻,代码重复劳动减少,保持面向对象特征。