首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery XmlHttpRequest缓存-控件被忽略

jQuery XmlHttpRequest缓存-控件被忽略
EN

Stack Overflow用户
提问于 2012-03-17 05:36:28
回答 2查看 9.9K关注 0票数 16

我使用的是google chrome,我注意到每次我做一个XHR请求时,我都会得到下面的头文件:

代码语言:javascript
复制
Cache-Control: no-cache
Pragma: no-cache

如果您在http://www.w3.org/TR/XMLHttpRequest/上阅读规范,它会显示以下内容

如果用户代理实现了HTTP缓存,它应该遵守author请求报头中的缓存控制报头(例如缓存控制:否-缓存绕过缓存)。它不能自动发送Cache-Control或Pragma请求头,除非最终用户明确请求此类行为(例如,通过重新加载页面)。

好吧,我尝试了以下几种方法:

代码语言:javascript
复制
$.ajax(myUrl, {
    type: 'get',
    dataType: 'json'
    cache: true,
    headers: {
      'Cache-Control': 'max-age=200' 
    }
  })

正如您所看到的,我显式地设置了Cache-Control头,希望获得我的资源的缓存副本。好吧,Chrome似乎忽略了Cache-Control头。

是否可以在发出XHR请求时不发送Cache-Control: no-cache标头?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-26 22:19:05

这是个愚蠢的错误。我将开发人员工具设置为“禁用缓存”。这就是为什么它总是添加缓存控制头部的原因。如果这种情况发生在您身上,请确保您没有选中该框。

劳尔

票数 47
EN

Stack Overflow用户

发布于 2012-03-17 05:49:06

我刚刚测试了它,你的代码运行良好,除了缺少一个逗号。

打开网络选项卡,然后在此页面的控制台中尝试:

代码语言:javascript
复制
$.ajax('http://stackoverflow.com/', {
    type: 'get',
    dataType: 'json',
    cache: true,
    headers: {
        'Cache-Control': 'max-age=123' 
    }
})

再次检查网络选项卡,单击刚刚发出的请求,然后单击"headers“选项卡。您将看到请求是使用您提供的Cache-Control标头发送的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9744816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档