首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是Cache-Control: private?

什么是Cache-Control: private?
EN

Stack Overflow用户
提问于 2012-10-16 14:31:28
回答 3查看 130.1K关注 0票数 157

当我访问chesseng.herokuapp.com时,我得到一个响应头,如下所示

代码语言:javascript
复制
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

然后我刷新页面并获取

代码语言:javascript
复制
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/测试页面时,它告诉我“利用浏览器缓存”。

EN

回答 3

Stack Overflow用户

发布于 2012-10-16 15:17:27

代码语言:javascript
复制
Cache-Control: private

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

来自RFC2616 section 14.9.1

票数 171
EN

Stack Overflow用户

发布于 2014-02-02 04:07:25

RFC2616,section 14.9.1

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

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

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

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

专用一词的这种用法仅控制可以缓存响应的位置,不能确保消息内容的私密性。

票数 21
EN

Stack Overflow用户

发布于 2017-02-18 20:37:03

Expires entity-header字段提供响应被视为过期的日期/时间: stale.The缓存控制:MaxAge值(以秒为单位)大于响应被视为陈旧的时间值。

虽然上面的头部字段提供了一种机制,让客户端决定是否向服务器发送请求。在某些情况下,客户端向服务器发送请求,并且响应的年龄值大于最大值,这是否意味着服务器需要将资源发送给客户端?也许资源永远不会改变。

为了解决这个问题,HTTP1.1给出了最后修改的报头。服务器将响应的最后修改日期提供给客户端。当客户端需要该资源时,它会向服务器发送If-Modified- send报头字段。如果此日期早于资源的修改日期,则服务器会将资源发送给客户端,并提供200 code.Otherwise,它将向客户端返回304代码,这意味着客户端可以使用它缓存的资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12908766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档