Chrome 不缓存 JSON 响应

Posted

技术标签:

【中文标题】Chrome 不缓存 JSON 响应【英文标题】:Chrome not caching JSON responses 【发布时间】:2014-09-12 16:38:07 【问题描述】:

我正在编写一个基于 AJAX 的自动完成功能,并试图通过使用客户端缓存来防止我的服务器被请求淹没。设置如下,Django 在后端提供 JSON 响应,客户端使用 jQuery 的 AJAX 例程向GET 提供适当的数据。

查看 Chrome 中的响应标头,一切正常。 Cache-Control 标头存在,所以我很确定问题超出了 Django 的范围。

但是,服务器日志显示已向 API 发出请求。

代码:

这是我用来查询 API 的代码。

function get(url, callback) 
    jQuery.ajax(
        type: 'GET',
        contentType: 'application/json',
        dataType: 'json',
        cache: true,
        url: url,
        success: callback
    );

其他:

小禁用缓存复选框未勾选,因此 Chrome 应该缓存响应。

编辑:

这一切都是在我的开发环境中设置的。所以服务器是从127.0.0.1:8000 服务的。

【问题讨论】:

我在一个小脚本中指定了Cache-Control: max-age=300, public, must-revalidate,它可以很好地缓存。一个小提示:确保您通过单击链接打开页面,否则(F5 或输入地址)chrome 明确指定 max-age=0 经过进一步调查,这正是发生的事情。 【参考方案1】:

如果您使用地址栏或 F5 打开页面,Chrome 会发送 Cache-Control:max-age=0

就是这样 - 如果您想查看它的工作原理,请单击链接转到该页面。

相关但已过时的答案:https://***.com/a/385491/251311

【讨论】:

酷,通过链接访问页面似乎返回了一个缓存响应,就像我期待的那样。这是 API 中请求更密集的部分之一,因此每一点都会有所帮助。谢谢!

以上是关于Chrome 不缓存 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 正在缓存 API 响应,而 Safari 没有

Flutter 使用 http 响应头缓存 JSON 响应

强制 Chrome 显示格式为树结构的 Json 响应

xhr 请求响应不应从磁盘缓存轨道中选择

Firefox 开发者工具截断长网络响应,Chrome 不显示

如何在 iOS 上本地缓存 JSON Web 响应 - 目标 c