当我访问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
所以看起来缓存起作用了。如果这适用于缓存,那么让和Cache-Control:max-age.过期的有什么意义呢更令人困惑的是,当我在https://developers.google.com/speed/pagespeed/insights/测试页面时,它告诉我“利用浏览器缓存”。
发布于 2012-10-16 15:17:27
发布于 2014-02-02 04:07:25
RFC2616,section 14.9.1
表示所有或部分响应消息是针对单个用户的,不能由共享缓存缓存...私有(非共享)缓存可以缓存响应。
浏览器可以使用此信息。当然,当前的“用户”可能意味着很多东西:操作系统用户、浏览器用户(例如Chrome的配置文件)等等。
对我来说, Cache-Control: private
的一个更具体的例子是代理服务器(通常有很多用户)不会缓存它。它是为最终用户设计的,而不是其他人。
仅供参考,RFC明确表示这不提供安全性。它是关于显示正确的内容,而不是保护内容。
专用一词的这种用法仅控制可以缓存响应的位置,不能确保消息内容的私密性。
发布于 2017-02-18 20:37:03
Expires entity-header字段提供响应被视为过期的日期/时间: stale.The缓存控制:MaxAge值(以秒为单位)大于响应被视为陈旧的时间值。
虽然上面的头部字段提供了一种机制,让客户端决定是否向服务器发送请求。在某些情况下,客户端向服务器发送请求,并且响应的年龄值大于最大值,这是否意味着服务器需要将资源发送给客户端?也许资源永远不会改变。
为了解决这个问题,HTTP1.1给出了最后修改的报头。服务器将响应的最后修改日期提供给客户端。当客户端需要该资源时,它会向服务器发送If-Modified- send报头字段。如果此日期早于资源的修改日期,则服务器会将资源发送给客户端,并提供200 code.Otherwise,它将向客户端返回304代码,这意味着客户端可以使用它缓存的资源。
https://stackoverflow.com/questions/12908766
复制相似问题