动态页面的网站,如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”。
关于静态化,还有一些高级的方法,难度较高,在此就不一一介绍。