0

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

我已将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 标头看起来不错,但每次刷新页面时都会发出请求。

4

3 回答 3

1

这是你的问题:

Cache-Control: no-cache

规范

这允许源服务器阻止缓存,即使缓存已配置为向客户端请求返回陈旧响应。

于 2012-05-16T17:34:29.947 回答
0

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

于 2012-05-16T17:38:25.673 回答
0

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

$.ajax({ url: postUrl, type: 'POST', cache: true, /* 默认情况下应该是 true,但在你的情况下我会检查这个 */ data: stuff });

于 2012-05-16T17:39:03.683 回答