请您描述一个示例,说明在IIS中托管的asp.net应用程序中公共和私有缓存控制之间的区别。
我在MSDN中读到了以下不同之处:
公开: 设置Cache-Control:public以指定响应可由客户端和共享(代理)缓存缓存。
私有:默认值。设置Cache-Control:private以指定响应仅在客户端上可缓存,而不是由共享(代理服务器)缓存缓存。
我不确定我是否完全理解每种选择的利弊。何时使用或不使用它的例子会很棒。
例如,如果我有两个托管相同应用程序的Web服务器,我该怎么办?如果我选择私人或公共,有什么值得注意的吗?
答案 0 :(得分:212)
唯一的区别是,对于Private,您不允许代理缓存通过它们传输的数据。最后,这一切都归结为您发送的页面/文件中包含的数据。
例如,您的ISP可能在您和Internet之间有一个不可见的代理,即缓存网页以减少所需的带宽量并降低成本。通过使用cache-control:private,您指定它不应该缓存页面(但允许最终用户这样做)。如果您使用cache-control:public,则表示每个人都可以缓存页面,因此代理会保留副本。
根据经验,如果每个人都可以访问(例如,此页面中的徽标)缓存控制:公共可能会更好,因为缓存它的人越多,你需要的带宽更少。如果它是与连接用户相关的东西(例如,此页面中的HTML包含我的用户名,那么它对任何其他人都没用)缓存控制:私有会更好,因为代理将缓存数据其他用户不会请求,也可能会保留您不希望保存在您不信任的服务器中的数据。
当然,所有非公开的东西都应该有私有缓存。否则,数据可能存储在中间代理服务器中,任何有权访问它的人都可以访问它。