繁体   English   中英

jQuery XmlHttpRequest忽略Cache-Control

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM