在Web编辑中,动态文件静态化好处不言而喻,很多网站都采用XMLHTTP + ADODB.Stream的方式,因为方法简单,很多采集程序也是用同样的方式,网上有很多介绍文章。阿托母婴服务机构的电子商务网站也是采用这样的方法,把上万个个产品的网页都静态化,这些产品介绍完全没必要每次都从数据库读数据,通过动态文件静态化,节省了大量的服务器资源。比如:

正常的动态网页是:http://www.mylovebb.com/www/List.asp?id=134 

转换为静态化文件:http://www.mylovebb.com/Class61/List134.htm

近乎完美,但还差一点点,且看下面:

在进行XMLHTTP 采集时,并不一定就采集到正常的html代码,因为在采集时就如同在浏览网站一样,出错的可能性有很多,比如:网站繁忙无法显示、DNS出错,500错误、404错误等。一旦出错,静态化后的文件就不是对产品的介绍,而是保存了当时无法显示网页的代码,实在有些搞笑。所以在采集时,必须对采集时返回的web状态进行检测,如果返回的代码是200,则表示正常输出,如果是其他,比如说404,500,则说明错误发生了。基本代码如下:

dim objXmlHttp,result
 set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
 objXmlHttp.open "GET",aspURL,false
 objXmlHttp.send()

 Dim binFileData

  While objXmlHttp.readyState <> 4
  objXmlHttp.waitForResponse 1000
  Wend

 ' 有时候,没有正确返回200代码,所以需要判断状态
result = CInt(objXmlHttp.Status)    

 If result = 200  Then   ' 正确的返回值
  binFileData = objXmlHttp.responseBody
 End If

 '释放对象
 Set ObjXMLHTTP=Nothing
  
If result =200 Then   ' 正确的返回值
' 这里再调用ADODB.Stream保存后的网页代码
END IF

通过这样的方式,代码几乎就完美了。

转载本文,必须全文转载,并且必须注明出错和链接。