繁体   English   中英

如何在ajax请求中控制缓存控制

[英]How to control cache-control in ajax request

这可能是一个愚蠢的问题,但我搜索了很多没有任何结果。 我知道如何在服务器响应中设置缓存控制,但如何更改 ajax 请求中的缓存控制值? 注意:我希望浏览器使用它的缓存。 我不希望它从服务器获取更新的 json ......这就是我想要做的全部事情。

在此处输入图片说明

您可以使用headers属性,如下所示:

$.ajax({
...
headers: {
     'Cache-Control': 'max-age=1000' 
}
...
});

请记住, cache属性与Cache-Control标头没有任何共同之处,它只是一个缓存破坏者(将?_={timestamp}附加到 GET 参数)并且仅适用于GETHEAD请求。

无论如何,一些有用的东西: 如何设置 HTTP 标头(用于缓存控制)?

真正的答案是,当您在 Network 面板中看到Cache-Control: max-age=0 ,这很可能是浏览器为避免缓存所做的事情。 默认情况下,这不是 jQuery 正在做的事情 所以改变标题没有意义。 所以你可以简单地使用$.getJSON()并且 HTTP 缓存将工作......

所以只需关闭 devtools 中的禁用缓存功能,你应该没问题(正如在 kav 的评论中已经指出的那样)。

但还有另一个问题。 缓存控制标头仅适用于普通 200 请求(成功)。 大多数错误不会在 Firefox 中缓存。 无论您的服务器说什么,Firefox 都会忽略响应中的 Cache-control 标头。 所以无论你做什么 Firefox 都不会缓存 404 或 400 请求。 您可以使用 410 (Gone) 而不是 404。但这也需要在服务器端完成,而不是在 AJAX 请求中(因此在响应标头中,而不是在请求标头中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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