【问题标题】:Chrome not caching JSON responsesChrome 不缓存 JSON 响应
【发布时间】: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
  • 经过进一步调查,这正是发生的事情。

标签: jquery json django google-chrome caching


【解决方案1】:

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

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

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

【讨论】:

  • 酷,通过链接访问页面似乎返回了一个缓存响应,就像我期待的那样。这是 API 中请求更密集的部分之一,因此每一点都会有所帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 2015-02-21
  • 2015-08-21
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 2013-12-08
相关资源
最近更新 更多