Django Cache-control header:为什么Chrome不缓存此资源?

时间:2014-01-22 20:51:56

标签: django google-chrome caching http-headers browser

我用cache_control装饰了一个Django视图,如下所示:

@cache_control(
    private=True,
    max_age=5 * 60,  # 5 minutes
)
def my_view(req):
    …

当我使用本地测试服务器进行尝试时,它按预期工作:Chrome中的后续页面视图使用缓存资源而不发出请求。但是,在生产中部署时,Chrome似乎会忽略Cache-control标头,并在每次点击该页面时发出新请求。

以下是生产服务器响应的标题的完整列表:

Cache-Control:private, max-age=300
Connection:close
Content-Encoding:gzip
Content-Length:13135
Content-Type:text/html; charset=utf-8
Date:Wed, 22 Jan 2014 20:39:29 GMT
P3P:CP="IDC CURa ADMa OUR IND PHY ONL COM STA"
Server:nginx/1.4.1
Set-Cookie:csrftoken=87y26bT5uPmyA9wt51N7m4blyqBH5nSo; expires=Wed, 21-Jan-2015 20:39:29 GMT; Max-Age=31449600; Path=/
Vary:Cookie,Accept-Encoding

可能出现什么问题?有任何想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

知道了:它是Google Analytics的Cookie和Vary:Cookie标头(由Django的SessionMiddleware设置)的组合。 Google Analytics的Cookie会随着每个请求而更改,但由于在ga.js上处理时localhost未加载,因此问题仅出现在生产中。