You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBscript中HttpRequest的ResponseText对同一URL不更新的问题求助

解决VBScript中XMLHTTP请求缓存问题

MSXML2.XMLHTTP对象会复用IE的本地缓存机制,仅添加Cache-Control: no-cache有时无法彻底绕过缓存,导致重复请求返回相同结果。以下是几种可靠的解决方法:

方案一:改用ServerXMLHTTP对象(推荐)

MSXML2.ServerXMLHTTP专为服务端/脚本场景设计,默认禁用缓存,无需额外配置:

On Error Resume Next

Dim o
Set o = CreateObject("MSXML2.ServerXMLHTTP")
o.Open "GET", requestURL, False
o.send
If Err.Number <> 0 Then
    MsgBox Err.Description, 16, "Error"
Else
    MsgBox o.responseText, 0, "Response"
End If

方案二:补充多组缓存禁用请求头

如果必须使用XMLHTTP,同时添加多个缓存控制头,强制跳过本地和服务器缓存:

On Error Resume Next

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.Open "GET", requestURL, False
' 组合多个缓存禁用头,覆盖不同场景
o.setRequestHeader "Cache-Control", "no-cache, no-store, must-revalidate"
o.setRequestHeader "Pragma", "no-cache"
o.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
o.send
If Err.Number <> 0 Then
    MsgBox Err.Description, 16, "Error"
Else
    MsgBox o.responseText, 0, "Response"
End If

方案三:给URL添加唯一随机参数

通过修改URL,让每次请求的地址唯一,从根源上绕过缓存机制:

On Error Resume Next

Dim o, uniqueURL
' 根据原有URL是否带参数,决定用?或&拼接随机时间戳
uniqueURL = requestURL & IIf(InStr(requestURL, "?") > 0, "&", "?") & "rand=" & Timer()
Set o = CreateObject("MSXML2.XMLHTTP")
o.Open "GET", uniqueURL, False
o.send
If Err.Number <> 0 Then
    MsgBox Err.Description, 16, "Error"
Else
    MsgBox o.responseText, 0, "Response"
End If

内容的提问来源于stack exchange,提问作者Hongchen Lin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:45:28