为什么浏览器不会缓存我的http响应?

时间:2012-05-16 17:31:45

标签: http caching browser

我有一个用django-tastypie开发的REST api。我有一些资源非常繁重但不可变,所以我希望浏览器缓存它们以避免不必要的请求。

我已将HTTP Expire标题设置为将来两年的日期,这就是浏览器获取的内容:

HTTP/1.1 200 OK

Date: Wed, 16 May 2012 17:29:33 GMT
Server: Apache/2.2.14 (Ubuntu)
Vary: Cookie,Accept-Encoding,User-Agent
Expires: Tue, 06 May 2014 17:29:33 GMT
Cache-Control: no-cache, public
Content-Encoding: gzip
Access-Control-Allow-Origin: *
Content-Length: 1051
Keep-Alive: timeout=15, max=82
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8

我正在使用jQuery.ajax发出请求。 expires标头看起来不错,但每次刷新页面时都会发出请求。

3 个答案:

答案 0 :(得分:1)

这是你的问题:

Cache-Control: no-cache

来自spec

  

这允许源服务器甚至通过缓存来阻止缓存   已配置为返回对客户端请求的陈旧响应。

答案 1 :(得分:0)

如果此内容可以更改,请尝试在jQuery.ajax中使用ifModified:true

答案 2 :(得分:0)

在.ajax调用中,将cache:属性设置为true,如下所示:

$。AJAX({         url:postUrl,         类型:'POST',         cache:true,/ *默认情况下这应该是true,但在你的情况下我会检查这个* /         数据:东西     });