我想关闭在Windows计算机上的应用程序中运行的VBScript调用服务器的URL时使用的缓存。我用什么函数/方法/对象来做到这一点?VBScript:禁止缓存服务器对HTTP响应的URL响应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
是否有上述对象的功能/方法来关闭缓存,还是应该在调用URL之前调用方法/函数来关闭响应对象上的缓存?
我在这里寻找解决方案:http://msdn.microsoft.com/en-us/library/ms535874(VS.85).aspx - 不够有帮助。在这里:http://www.w3.org/TR/XMLHttpRequest/ - 非常不友好且难以阅读。
我也尝试使用HTTP头设置和html文件标题元数据不使用缓存,迫使:
服务器端的Perl CGI脚本响应返回到调用客户端的片段设置有效期至0
print $httpGetCGIRequest->header(
-type => 'text/html',
-expires => '+0s',
);
响应HTTP头设置发送回给客户机:
<html><head><meta http-equiv="CACHE-CONTROL" content="NO-CACHE"></head>
<body>
response message generated from server
</body>
</html>
上面http头和html文件头设置h。没有工作,因此我的问题。
非常感谢您的时间Tomalak。我发现WinHttpRequest.5.1 COM对象不会缓存。但是,我将不得不做更广泛的测试以获得信心。为每个不同的URL提示+1 - 这绝对是一个值得考虑的提示 - 我可以像WinHttpRequest.5.1一样使用它,并扩展我们的服务器以处理额外的URL参数。我可能会包含一个高精度的请求时间字段,例如也许是毫秒。作为解决方案的一部分,这绝对值得考虑。 – therobyouknow 2010-06-17 08:54:16
现在接受的答案,因为你的随机url建议命中路由的原因 - 缓存和打破这个,使代码被迫每次联系服务器。 – therobyouknow 2010-06-17 14:26:56
要创建一个唯一的会话ID号,我使用VB函数中建立的日期和计时器,一个随机数,以及计算机名称/主机名,其中脚本Date给出今天的日期,Timer给出时间流逝的时间毫秒。随着随机数和机器ID,这应该使HTTP GET URL调用唯一。 2个相同的URL调用相同的机会是零。 – therobyouknow 2010-06-17 14:27:24