the*_*now 11 vbscript caching response xmlhttprequest
我想关闭在Windows机器上的应用程序中运行的VBScript对服务器进行URL调用时使用的缓存.我用什么函数/方法/对象来做这个?
当第一次进行调用时,我的基于Linux的Apache服务器从正在运行的CGI Perl脚本返回响应.但是,后续运行的脚本似乎使用了与第一次相同的响应,因此数据正在某处缓存.我的服务器日志确认在以后的那些时间内没有调用服务器,仅在第一次.
这就是我在做的事情.我在商业应用程序中使用以下代码(不想提及此应用程序,可能与我的问题无关):
With CreateObject("MSXML2.XMLHTTP")
.open "GET", "http://myserver/cgi-bin/nsr/nsr.cgi?aparam=1", False
.send
nsrresponse =.responseText
End With
Run Code Online (Sandbox Code Playgroud)
在上面的对象上是否有一个函数/方法来关闭缓存,或者我应该在创建URL之前调用一个方法/函数来关闭响应对象的缓存?
我在这里寻找解决方案:http://msdn.microsoft.com/en-us/library/ms535874(VS.85).aspx - 不是很有帮助.在这里:http://www.w3.org/TR/XMLHttpRequest/ - 非常不友好,难以阅读.
我也试图强制不使用http标头设置和html文件头元数据缓存:
服务器端Perl CGI脚本的片段,它将响应返回给调用客户端,将expiry设置为0.
print $httpGetCGIRequest->header(
-type => 'text/html',
-expires => '+0s',
);
Run Code Online (Sandbox Code Playgroud)
响应中的Http头设置发送回客户端:
<html><head><meta http-equiv="CACHE-CONTROL" content="NO-CACHE"></head>
<body>
response message generated from server
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
上面的http标头和html文档头设置都没有用,因此我的问题.
我不认为XMLHTTP对象本身甚至实现了缓存.
您在打电话后立即发送新的请求.send().缓存的全部意义在于避免发送请求,但这不会发生(就您的代码示例而言).
但是如果在某种浏览器中使用该对象,则浏览器可以实现缓存.在这种情况下,常见的方法是在语句中包含缓存断开器:每次发出新请求时更改的随机URL参数(例如,将当前时间附加到URL).
或者,您可以让服务器发送Cache-Control: no-cache, no-storeHTTP标头,看看是否有帮助.
这<meta http-equiv="CACHE-CONTROL" content="NO-CACHE>可能是无用的,你可以完全放弃它.
您可以使用WinHTTP,它不会缓存HTTP响应.您仍应使用SetRequestHeader方法添加缓存控制指令(Cache-control:no-cache),因为它指示中间代理和服务器不返回先前缓存的响应.
| 归档时间: |
|
| 查看次数: |
17281 次 |
| 最近记录: |