动态页面的网站,如ASP编程中经常看到的post.asp?id=123,这种方式每次打开都可能会从数据库中读取信息,响应很慢,而且这种方式的页面不利于搜索引擎收录。所以我们要做静态化处理,将其变成post/123.html或post123.html这种样式。

真正的静态化应该是服务器上存储的就是xxx.html这样的页面,当有客户端请求这个页面时,IIS直接找到这个html页面,发给客户端就搞定了,效率可以很高。但去做静态化的工作很烦,很复杂,于是就出现了伪静态。什么时伪静态呢,就是访问的地址确实是一个html的页面地址,但服务器上却没有这个html静态页面,它这个是通过一些插件让IIS做了一个跳转处理,当接收到post/数字.html时,不直接去找这个html静态页面,而去找post.asp?id=数字,这样就能顺利的返回结果了。

伪静态这里只是简单提一下,我们要做真正的静态。

一般有两种比较简单的方式来做静态化

1、模拟浏览器去打开post.asp?id=1的页面,把访问得到的html代码保存下来,命名为post/1.html

给一个函数,大家参考

'抓取页面

Function GetHttpPage(httpUrl,charSet)

  If IsNull(httpUrl)=True Or Len(httpUrl)<18 Or httpUrl="$False$" Then

     GetHttpPage="$False$"

     Exit Function

  End If

  Dim Http

  Set Http=server.createobject("MSXML2.XMLHTTP")

  Http.open "GET",HttpUrl,False

  Http.Send()

  If Http.Readystate<>4 then

     Set Http=Nothing

     GetHttpPage="$False$"

     Exit function

  End if

  GetHTTPPage=bytesToBSTR(Http.responseBody,charSet)

  Set Http=Nothing

  If Err.number<>0 then

     Err.Clear

  End If

End Function

2、使用模板替换法

假如有如下一个模板

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

 <title>[%title%]</title>

  <body>

[%title%]

<br>

[%content%]<br>

[%time%]

</body>

</HTML>

然后你使用fso把这个模板文件读取到一个临时字符串变量中,然后循环数据库,拿数据库的字段,把字符串中的[%title%]这个的待替换关键词替换掉,然后把这个字符串再使用fso保存到一个新的文本文件中,这个新的文本文件就是你需要的静态页面,可以将其命令为“xx.html”。

关于静态化,还有一些高级的方法,难度较高,在此就不一一介绍。

03-15 17:09