解决Microsoft.XMLHTTP的缓存问题

今天在动态页面转静态的使用用了Microsoft.XMLHTTP来读取动态页面的内容,但是遇到了一个问题就是同样的动态地址Get的时候Microsoft.XMLHTTP得到的是缓存里的东西,除非你重启IIS。

Microsoft.XMLHTTP代码如下:

Function getHtml(Url)
Dim XmlHttp
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET",Url, False
XmlHttp.setRequestHeader "Content-Type","text/HTML"
XmlHttp.Send
getHtml = XmlHttp.ResponseBody
End Function

后来想到如果地址稍微有些变化不就可以取出非缓存的内容了,就在Url后面加一串随机数。代码如下:

Function getHtml(Url)
Dim XmlHttp,rUrl
Randomize()
rUrl = Url & "&rNum=" & Int((9999) * Rnd(Now())+1)

'如果你的Url没参数写成 rUrl = Url & "?rNum=" & Int((9999) * Rnd(Now())+1)
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET",rUrl, False
XmlHttp.setRequestHeader "Content-Type","text/HTML"
XmlHttp.Send
getHtml = XmlHttp.ResponseBody
End Function


注意红色的代码部分,这样问题就解决了。

不知道有没有更好的解决方法。有人说的加:

Response.Buffer =True
Response.ExpiresAbsolute =Now() - 1
Response.Expires=0
Response.CacheControl="no-cache"
或者
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
我试了下都不行
(转载 原文地址:http://www.kisssunshine.com/blogs/summit/archive/2007/09/17/30003.aspx)

有话要说