Cache-Control中的私有vs公共

时间:2010-08-16 10:29:40

标签: http caching iis http-headers cache-control

请您描述一个示例,说明在IIS中托管的asp.net应用程序中公共和私有缓存控制之间的区别。

我在MSDN中读到了以下不同之处:

公开: 设置Cache-Control:public以指定响应可由客户端和共享(代理)缓存缓存。

私有:默认值。设置Cache-Control:private以指定响应仅在客户端上可缓存,而不是由共享(代理服务器)缓存缓存。

我不确定我是否完全理解每种选择的利弊。何时使用或不使用它的例子会很棒。

例如,如果我有两个托管相同应用程序的Web服务器,我该怎么办?如果我选择私人或公共,有什么值得注意的吗?

1 个答案:

答案 0 :(得分:212)

唯一的区别是,对于Private,您不允许代理缓存通过它们传输的数据。最后,这一切都归结为您发送的页面/文件中包含的数据。

例如,您的ISP可能在您和Internet之间有一个不可见的代理,即缓存网页以减少所需的带宽量并降低成本。通过使用cache-control:private,您指定它不应该缓存页面(但允许最终用户这样做)。如果您使用cache-control:public,则表示每个人都可以缓存页面,因此代理会保留副本。

根据经验,如果每个人都可以访问(例如,此页面中的徽标)缓存控制:公共可能会更好,因为缓存它的人越多,你需要的带宽更少。如果它是与连接用户相关的东西(例如,此页面中的HTML包含我的用户名,那么它对任何其他人都没用)缓存控制:私有会更好,因为代理将缓存数据其他用户不会请求,也可能会保留您不希望保存在您不信任的服务器中的数据。

当然,所有非公开的东西都应该有私有缓存。否则,数据可能存储在中间代理服务器中,任何有权访问它的人都可以访问它。