【问题标题】:Does cache-control:private without expiration data imply "expire immediately"?cache-control:private 没有过期数据是否意味着“立即过期”?
【发布时间】:2011-07-13 16:42:01
【问题描述】:

我观察到从 ASP.NET 提供的大多数内容只有一个 Cache-Control: private 标头,没有 Last-Modified 或 Etag 标头。

我还观察到浏览器从不似乎缓存了这些内容,这可以从浏览器除了无条件的 GET 请求以外的任何东西来证明。

我试图支持这样的断言,即所有浏览器都将具有 Cache-Control:private 且没有过期数据的资源视为“不缓存”,但在 RFC (http:/ /www.w3.org/Protocols/rfc2616/rfc2616-sec14.html) 确认或反驳。

我的断言正确吗?请引用!

【问题讨论】:

    标签: asp.net caching standards cache-control


    【解决方案1】:

    W3C 上有一个电子邮件链可以追溯到大约 15 年前:http://www.w3.org/Protocols/HTTP/Issues/cache-private.html

    (1) "Cache-control: private" 与 Roy 的草案一样,但带有 明确提及可扩展性。单用户代理缓存 有效地允许忽略此指令。

    (2) "Cache-control: no-cache" 定义为完全相同的意思 诸如“缓存控制:私有”之类的东西,但也不例外 用户代理缓存。

    (3)我们添加“Cache-control: no-store”,适用于整个 消息,可以在响应或请求中发送。如果发送 在请求中,这意味着“不要存储此请求的任何部分 或对它的任何响应。”如果在响应中发送,则表示“不存储 此响应或引发它的请求的任何部分。” 这适用于单用户和共享缓存。缓存应该 遵守它,但我们明确警告不要将其视为隐私 机制。用户可以将此类响应显式存储在 缓存系统(例如,带有“另存为”对话框。历史缓冲区可能 将此类响应存储为正常操作的一部分。

    接着说:

    “private”指令表示响应消息的一部分 仅供单个用户使用,不得缓存,除非在 由用户代理控制的私有(非共享)缓存。

    最重要的是:

    无论如何,这似乎是“私人”和“私人”之间的主要区别 “no-cache”是“private”允许缓存在用户代理的 单用户缓存,而“no-cache”没有。

    因此,在此基础上,我将其理解为不允许非私有缓存(即在代理层),但允许私有缓存(即在浏览器中)。我知道这只是对规范草案的讨论,但这是迄今为止我能找到的最好的解释。

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 2013-08-06
      • 2013-01-05
      • 2015-01-13
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多