Cache-Control 的私人与公共

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

我在 MSDN中读到的区别如下:

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

Private: 默认值。设置 Cache-Control: private,以指定响应只能在客户端缓存,而不能由共享(代理服务器)缓存缓存。

我不确定我是否完全理解了每个选择的利弊。举个例子说明什么时候该使用它,什么时候不该使用它。

例如,我应该做什么,如果我有两个网络服务器托管相同的应用程序?如果我选择“私人”或“公共”,有什么需要注意的吗?

64425 次浏览

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

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

根据经验,如果是 所有人可以访问的东西(例如,这个页面中的徽标) ,那么 public 缓存控制可能更好,因为缓存它的人越多,所需的带宽就越少。如果是与连接的用户有关的事情(例如,这个页面中的 HTML 包含了我的用户名,所以对其他人没有用)缓存控制: 私有的将会更好,因为代理将缓存不会被其他用户请求的数据,并且他们也可能保存你不想保存在你不信任的服务器中的数据。

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