3. ASP.NET 动态转静态页面的方法总结
1 在脚本内构造出HTML内容,使用FSO对象创建html页面,这是最原始的,优点是简单,缺点是页面的修改不方便,一般用到的地方是利用它生成整站参数文件。(通常网站如标题,名称等配置保存在数据库,将它生成Web.config保存这些变量调用,避免频繁访问数据库)
实现思路: 缺点: 所有的信息都要采取字符串批凑的方式来实现,比如需要一个列表,就需要拼凑字符串。问题是开发周期长,可扩展性非常差,而且不易维护,难修改
strHTML = "<html标记>" + RS(0) + "</html>"
strHTML = strHTML + ...
Set file = FSO.CreateFile()
file.Write(strHTML)
2 使用HTML模版页面,模版HTML代码中使用预定义的替换标签,如 $title $content $time,然后进行替换后fso创建, 就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件.这种技术采用得比较多,大部分的CMS都是使用这类方法
实现思路:
strHTML = FSO.Read(htmlModelFile)
strHTML = Replace(strModel,"$title",RS(0))
strHTML = Replace(strHTML,"$time",RS(1))
...
Set file = FSO.CreateFile()
file.Write(strHTML)
其实只是将第一种方法中固化在程序代码中的html使用摸版代替,并替换而已. 至于html摸版,可以存储在数据库中,也可以存储在文本文件中.
3 编写程序自动访问动态页面,获取内容后再生成静态页面.
实现思路:
Set objHttp = Server.CreateObject("Microsoft.XMLHTTP")
objHttp.open("GET","news.show.asp?id="&id,false)
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Read(objHttp.ResponseText)
objStream.save(articlePath & "/article."&id&".shtml")
4 使用xml+xslt实现静态数据文件客户端xslt转换方法
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="article.show.xslt"?>
<article>
<title>asdf</title>
<content>fdsa</content>
</article>
以上是xml数据文件,可以由msdom对象生成.
<?xml version="1.0" encoding="gb2312">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<!DOCTYPE html PUBLIC "-//W
3C
//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml/DTD/xhtml1-strict.dtd">
<html>
<head>
<title><xsl:value-of select="/article/title"></title>
</head>
<body>
<xsl:value-of select="/article/content">
</body>
</html>
</xsl:template>
</xsl:stylesheet>
以上是xslt文件
这种方法的优势在于更改xslt文件后不必理会以前生成的xml数据文件,缺点在于加重了客户端的负担,而且假如客户端浏览器不支持xslt转换将无法正常显示xhtml文档.
5 利用xml+xsl在服务端生成静态的html
这个方法基本与第四种方法一致,不过转换过程放到服务端进行.
缺点在于修改xslt模版后要重新生成以前生成的xhtml文档.
以上几种方法中最常用的是第二种,最折中的是第三种,最推荐的是第四种(目前绝大多数浏览器都支持xslt的转换),当然第五种也不错.