什么是缓存控制:私人?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (63)

当我访问chesseng.herokuapp.com时,我收到了一个看起来像

Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/css
Date:Tue, 16 Oct 2012 06:37:53 GMT
Last-Modified:Tue, 16 Oct 2012 03:13:38 GMT
Status:200 OK
transfer-encoding:chunked
Vary:Accept-Encoding
X-Rack-Cache:miss

然后我刷新页面并获取

Cache-Control:private
Connection:keep-alive
Date:Tue, 16 Oct 2012 06:20:49 GMT
Status:304 Not Modified
X-Rack-Cache:miss

所以它看起来像缓存工作。如果这适用于缓存,那么ExpiresCache-Control的意义何在:max-age。为了增加混淆,当我通过https://developers.google.com/speed/pagespeed/insights/测试页面时,它告诉我“利用浏览器缓存”。

提问于
用户回答回答于
Cache-Control: private

指示全部或部分响应消息是针对单个用户的,并且不能由共享缓存(例如代理服务器)缓存。

RFC2616第14.9.1节

用户回答回答于

RFC 2616,第14.9.1节

指示全部或部分响应消息是针对单个用户的,并且不能被共享缓存缓存......私有(非共享)缓存可以缓存响应。

浏览器可以使用这些信息。当然,目前的“用户”可能意味着很多东西:操作系统用户,浏览器用户(例如Chrome的配置文件)等等。没有说明。

对我来说,更具体的例子Cache-Control: private是,代理服务器(通常有许多用户)将不缓存它。它是为最终用户而设,而不是其他人。

仅供参考,RFC明确表示这不提供安全性。这是关于展示正确的内容,而不是确保内容。

单词private的这种用法只控制响应可能被缓存的位置,并且不能确保消息内容的隐私。

扫码关注云+社区