2011-07-13 25 views
0

我观察到ASP.NET提供的大多数内容只有一个Cache-Control:私有头文件,没有Last-Modified或Etag头文件。缓存控制:私有没有过期数据意味着“立即过期”?

我也观察到,浏览器从来没有似乎缓存这个内容,证明从未见过的浏览器发布任何东西,但无条件的GET请求。

我试图支持断言具有缓存控制:私人和没有到期数据的资源将被所有浏览器视为“不缓存”,但无法找到任何在RFC(http: //www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)来确认或反驳它。

我的断言是否正确?请引用!

回答

1

有一个关于W3C的历史可以追溯到大约15年的电子邮件环比:http://www.w3.org/Protocols/HTTP/Issues/cache-private.html

(1)“缓存控制:私人”仍然是在罗伊的草案,但有 提到的可扩展性的明确列入。单用户代理缓存 被有效地允许忽略该指令。 (2)“Cache-control:no-cache”被定义为与“Cache-control:private”完全相同的 事物,但是 用户代理缓存也不例外。 (3)我们添加“缓存控制:无存储”,它适用于整个 消息,并且可以通过响应或请求发送。如果在请求中发送了 ,则表示“不要存储此请求的任何部分 或对此的任何响应。”如果以响应形式发送,则表示“不要将 存储在此响应或引发它的请求的任何部分。” 这适用于单用户和共享缓存。缓存应该 服从它,但我们明确告诫不要依赖它作为隐私 机制。用户可以明确地存储这种反应的 缓存系统(例如之外,带有“另存为”对话框历史缓冲区可以 店这样的回答,作为其正常操作的一部分

它接着说:。

的“私人”指令表示该响应消息 的部分被用于单个用户和除一个 私人(非共享)由用户代理控制高速缓存内不能被高速缓存。

而且最重要的是:

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

所以在这个基础上,我把它意味着非私有缓存是不允许的(即在代理层),但私人缓存允许(即在浏览器中)。我知道这只是关于草稿的讨论,但这是迄今为止我能找到的最好的解释。