144

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

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

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

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

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

例如,如果我有两个 Web 服务器托管相同的应用程序,我应该怎么做?如果我选择 Private 或 Public,有什么需要注意的吗?

4

1 回答 1

255

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

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

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

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

于 2010-08-16T10:51:30.347 回答