我正在做一个http GET来获取数据,我正在使用IXMLHTTPRequest2。
如果我获取网址“http://foo.com”(卷曲“http://foo.com”),第二次我再次获得此网址,服务器上的内容实际上已更改,但我是什么获取是缓存的结果。
缓存似乎只是荣誉URL,因此如果具有相同URL的不同标头,仍然会有相同的缓存结果。 我尝试过“Cache-Control:no-cache”,“Cache Control:no-store”和“Pragma:no-cache”。他们都不被API所尊重。
有没有办法关闭缓存或四处走动? (我正在使用的一个步骤是在URL的末尾添加垃圾,但我感觉不舒服。)
答案 0 :(得分:3)
Prashant在这里回答了我的问题:http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/1df95d3e-68c9-4351-822a-c2cfde380248/#1df95d3e-68c9-4351-822a-c2cfde380248
您可以通过在请求中设置“If-Modified-Since”HTTP标头并在过去设置时间来强制XHR检索最新内容。 如果您可以控制服务器响应,则可以发送一个过期HTTP响应标头,其值为0或过去的日期。这应该让XHR为您检索最新的响应。
您只需要执行上述操作之一,无需更改客户端和服务器端代码。
客户端代码可以更改为:
xhr->Open(...)
xhr->SetRequestHeader(L"If-Modified-Since", L"Sat, 01 Jan 2000 00:00:01 GMT");
xhr->Send(...)
如果您的服务器端代码基于ASP.net,更改服务器端行为,您可以更改响应标头,如下所示:
Response.Headers.Add("Expires", "0")
答案 1 :(得分:0)
我认为你需要使用套接字.....我认为这两个链接应该有帮助