我观察到从ASP.NET提供的大多数内容只有一个Cache-Control:私有标头,没有Last-Modified或Etag标头。
我还观察到浏览器从不似乎缓存了这些内容,这是因为从未见过浏览器发出任何内容,只能发出无条件的GET请求。
我正在尝试支持这样的断言:具有Cache-Control的资源:私有且没有过期数据将被所有浏览器视为“不缓存”,但在RFC中找不到任何内容(http:/ /www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)确认或反驳。
我的断言是否正确?请引用!
答案 0 :(得分:1)
W3C上有一个可以追溯到15年前的电子邮件链:http://www.w3.org/Protocols/HTTP/Issues/cache-private.html
(1)“缓存控制:私人”仍然像罗伊的选秀一样,但有一个 提到明确包括的可扩展性。单用户代理缓存 有效地允许忽略该指令。
(2)“Cache-control:no-cache”定义为完全相同 作为“缓存控制:私有”的东西,但也没有例外 用户代理缓存。
(3)我们添加“Cache-control:no-store”,它适用于整个 消息,可以在响应中或在请求中发送。如果发送 在请求中,它表示“不存储此请求的任何部分 或者对它的任何回应。“如果在回复中发送,则表示”不存储 这个回复的任何部分或引出它的请求。“ 这适用于单用户和共享缓存。缓存应该 遵守它但我们明确警告不要将其视为隐私 机制。用户可以明确地存储此类响应 缓存系统(例如,使用“另存为”对话框。历史缓冲区可以 将这些回应存储为正常运作的一部分。
接着说:
“private”指令表示响应消息的一部分 适用于单个用户,除非在a中,否则不得缓存 由用户代理控制的私有(非共享)缓存。
最重要的是:
无论如何,它似乎是“私人”和“私人”之间的主要区别 “no-cache”是“私有”允许在用户代理中进行缓存 单用户缓存,而“无缓存”则没有。
因此,在此基础上,我将其视为不允许非私有缓存(即在代理层),但允许私有缓存 <(即在浏览器内)。我知道这只是关于规范草案的讨论,但这是迄今为止我能够找到的最佳解释。