[英]jQuery XmlHttpRequest Cache-Control being ignored
我正在使用谷歌浏览器,我注意到每次执行XHR请求时,我都会在请求中添加以下标头:
Cache-Control: no-cache
Pragma: no-cache
如果您阅读http://www.w3.org/TR/XMLHttpRequest/上的规范,则说明以下内容
如果用户代理实现HTTP缓存,则它应该尊重作者请求头中的Cache-Control头(例如,Cache-Control:no-cache绕过缓存)。 除非最终用户明确请求此类行为(例如,通过重新加载页面),否则它不能自动发送Cache-Control或Pragma请求标头。
好吧,我正在尝试以下方法:
$.ajax(myUrl, {
type: 'get',
dataType: 'json'
cache: true,
headers: {
'Cache-Control': 'max-age=200'
}
})
正如您所看到的,我明确地设置了Cache-Control标头,希望获得我的资源的缓存副本。 好吧Chrome似乎忽略了Cache-Control标头。
在发出XHR请求时是否可以不发送Cache-Control: no-cache
标头?
这是一个愚蠢的错误。 我将Developer Tools设置为“Disable Cache”。 这就是它总是添加缓存控制头的原因。 如果发生这种情况,请确保确保未选中此框。
劳尔
我只是测试它,你的代码工作正常,除了缺少逗号。
打开网络选项卡,然后在此页面的控制台中尝试此操作:
$.ajax('http://stackoverflow.com/', {
type: 'get',
dataType: 'json',
cache: true,
headers: {
'Cache-Control': 'max-age=123'
}
})
再次检查网络选项卡,单击刚刚创建的请求,然后单击“标题”选项卡。 您将看到请求是使用您提供的Cache-Control
标头发送的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.