ASP开发之生成静态HTML文件的方法比较

开发 后端
本文介绍的是在ASP开发网站中,生成态HTML文件的方法比较。希望对大家有帮助,一起来看吧!

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

当然,凡事有利必有弊,生成HTML页面无形中也耗费大量的磁盘空间以存放这些静态文件,在编辑页面过程中除读写数据库外,也要读写服务器磁盘,页面样式的改动必须重新生成全部HTML文件,等等。

像很多搜索引擎,都可以提交网站的页面地址列表,动态文件的收录问题已经不算是个问题了(如google sitemap)。得失就要自己衡量把握了,但无论如何,我们还是要懂得如何操作的。这里就引用一下别人的文章说明几种常见的生成思路,供大家参考参考。

1、下面这个例子直接利用FSO把html代码写入到文件中然后生成.html格式的文件 。

这是最原始的,优点是简单,缺点是页面的修改不方便,我一般用到的地方是利用它生成整站参数文件。(通常网站如标题,名称等配置保存在数据库,我将它生成config.asp保存这些变量调用,避免频繁访问数据库)

以下为引用的内容:

 

  1. <%   
  2. filename="test.htm"   
  3. if request("body")<>"" then   
  4. set fso = Server.CreateObject("Scripting.FileSystemObject")   
  5. set htmlwrite = fso.CreateTextFile(server.mappath(""&filename&""))   
  6. htmlwrite.write "<html><head><title>" & request.form("title") & "</title></head>"   
  7. htmlwrite.write "<body>输出Title内容: " & request.form("title") & "<br /> 
  8. 输出Body内容:" & request.form("body")& "</body></html>"   
  9. htmlwrite.close   
  10. set fout=nothing   
  11. set fso=nothing   
  12. end if   
  13. %>   
  14. <form name="form" method="post" action="">   
  15. <input name="title" value="Title" size=26>   
  16. <br>   
  17. <textarea name="body">Body</textarea>   
  18. <br>   
  19. <br>   
  20. <input type="submit" name="Submit" value="生成html">   
  21. </form>  

 

2、但是按照上面的方法生成html文件非常不方便,第二种方法就是利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值,完成模板功能,将最终替换过的所有模板代码生成HTML文件。这种技术采用得比较多,大部分的CMS都是使用这类方法。

以下为引用的内容:

 

  1. template.htm ' //模板文件   
  2. <html>   
  3. <head>   
  4. <title>$title$ by webjx.com</title>   
  5. </head>   
  6. <body>   
  7. $body$   
  8. </body>   
  9. </html> 
  10. TestTemplate.asp '// 生成Html   
  11. <%   
  12. Dim fso,htmlwrite   
  13. Dim strTitle,strContent,strOut   
  14. '// 创建文件系统对象   
  15. Set fso=Server.CreateObject("Scripting.FileSystemObject")   
  16. '// 打开网页模板文件,读取模板内容   
  17. Set htmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm"))   
  18. strOut=f.ReadAll   
  19. htmlwrite.close   
  20. strTitle="生成的网页标题"   
  21. strContent="生成的网页内容"   
  22. '// 用真实内容替换模板中的标记   
  23. strOut=Replace(strOut,"$title$",strTitle)   
  24. strOut=Replace(strOut,"$body$",strContent)   
  25. '// 创建要生成的静态页   
  26. Set htmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)   
  27. '// 写入网页内容   
  28. htmlwrite.WriteLine strOut   
  29. htmlwrite.close   
  30. Response.Write "生成静态页成功!"   
  31. '// 释放文件系统对象   
  32. set htmlwrite=Nothing   
  33. set fso=Nothing   
  34. %> 

 

3、第三种方法就是用XMLHTTP获取动态页生成的HTML内容,再用ADODB.Stream或者Scripting.FileSystemObject保存成html文件。找到一段XMLHTTP生成Html的代码参考一下。

以下为引用的内容:

常用函数:

1、输入url目标网页地址,返回值getHTTPPage是目标网页的html代码

  1. <%   
  2. function getHTTPPage(url)   
  3. dim Http   
  4. set Http=server.createobject("MSXML2.XMLHTTP")   
  5. Http.open "GET",url,false   
  6. Http.send()   
  7. if Http.readystate<>4 then   
  8. exit function   
  9. end if   
  10. getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")   
  11. set http=nothing   
  12. if err.number<>0 then err.Clear   
  13. end function % > 

2、转换乱玛,直接用xmlhttp调用有中文字符的网页得到的将是乱玛,可以通过adodb.stream组件进行转换

  1. <%  
  2. nction BytesToBstr(body,Cset)   
  3. dim objstream   
  4. set objstream = Server.CreateObject("adodb.stream")   
  5. objstream.Type = 1   
  6. objstream.Mode =3   
  7. objstream.Open   
  8. objstream.Write body   
  9. objstream.Position = 0   
  10. objstream.Type = 2   
  11. objstream.Charset = Cset   
  12. BytesToBstr = objstream.ReadText   
  13. objstream.Close   
  14. set objstream = nothing   
  15. End Function   
  16. txtURL=server.MapPath("../index.asp")   
  17. sText = getHTTPPage(txtURL)   
  18. Set FileObject=Server.CreateObject("Scripting.FileSystemObject")   
  19. filename="../index.htm"   
  20. Set openFile=FileObject.OpenTextfile(server.mapPath(filename),2,true) 'true为不存在自行建立   
  21. openFile.writeline(sText)   
  22. Set OpenFile=nothing   
  23. %>   
  24. <script>   
  25. alert("静态网页生成完毕");   
  26. history.back();   
  27. </script>  

 

小结,这三种方式是比较常用的生成HTML文件方法,我个比较喜欢使用第三种方式,因为页面改动时非常方便,就算动态页改动多大都好,只要重新用XMLHTTP读取生成一次即可。

希望通过本文的介绍,能给你带来帮助。

【编辑推荐】

  1. 利用ASP和SQL Server构建网页防火墙
  2. ASP新手之常用错误处理解析
  3. 分享ASP网页开发过程中的小技巧
  4. 经验分享之ASP动态网页制作技术
  5. ASP新手之常用ASP内置函数大总结
责任编辑:于铁 来源: 互联网
相关推荐

2009-08-28 12:41:49

静态方法与非静态方法

2009-08-24 18:00:52

ASP.NET模板生成

2009-07-29 15:58:54

静态文件处理ASP.NET

2009-08-07 14:05:21

ASP.NET控件

2009-07-30 12:42:19

html控件和web控

2009-08-14 13:37:25

ASP.NET静态页面

2009-07-24 10:53:51

ASP.NET实现静态

2014-10-22 10:46:03

ViewportHTML

2011-09-06 14:08:22

IIS

2011-06-15 17:09:43

PHP页面静态化

2009-09-04 13:11:25

ASP.NET生成XM

2014-02-19 09:59:52

iOS开发Html解析

2010-07-22 11:01:41

SQL Server

2009-06-12 18:30:12

Groovy 静态ma

2012-09-29 13:20:30

ASP.NETWeb框架

2009-08-05 17:11:51

ASP.NET控件开发ASP.NET服务器控

2009-12-01 14:33:06

PHP生成html文件

2012-02-23 10:32:19

HTML 5

2009-07-21 13:43:53

ASP和JSP比较

2009-08-31 09:41:05

C#反射静态方法开发
点赞
收藏

51CTO技术栈公众号