Cache-Control中的私有vs公共

ppo*_*zos 120 iis caching http cache-control http-headers

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

我在MSDN中读到的不同之处如下:

Public: Sets Cache-Control:public指定响应可由客户端和共享(代理)缓存缓存.

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

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

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

sal*_*iza 222

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

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

作为一个经验法则,如果它的东西,每个人都可以访问(例如,在此页面的标志)的Cache-Control:公众可能会更好,因为人越多,它缓存,带宽越小,你需要.如果它的东西,是关系到连接的用户(例如,在该页面的HTML包括我的用户名,所以它不会是别人有用)缓存控制:私人会更好,因为代理是缓存数据其他用户不会请求它们,并且它们也可能保留您不希望保存在您不信任的服务器中的数据.

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

  • 唯一的区别是,私有你**不**允许代理缓存......我猜这是一个错字.除此之外答案+1.值得补充的是,私有不提供任何程度的安全性,中间的代理仍然可以看到它.这只是意味着没有"诚实"的代理人会将其交给其他人而不是新生成的响应. (38认同)
  • 因此,如果我们不指定任何内容,默认行为是"公共"还是"私有"? (14认同)