是否有任何理由对同一资源使用“Vary: *”和“Vary: Foo”响应?
Posted
技术标签:
【中文标题】是否有任何理由对同一资源使用“Vary: *”和“Vary: Foo”响应?【英文标题】:Is there ever any reason to respond with "Vary: *" and "Vary: Foo" for the same resource? 【发布时间】:2010-08-20 10:24:32 【问题描述】:HTTP 服务器是否有任何理由有时以Vary: *
响应,有时以Vary: Foo
响应对同一资源的请求?
如果在接收(和缓存)两个响应之后,缓存应该做什么,然后它接收到具有匹配的Foo
标头的请求,Vary: Foo
响应适用于该请求?它可以提供匹配的响应,还是单独的 Vary: *
响应覆盖它?
【问题讨论】:
【参考方案1】:每个响应都是单独评估的,因此它可以选择 Vary: Foo 响应。
见:
https://svn.tools.ietf.org/svn/wg/httpbis/draft-ietf-httpbis/latest/p6-cache.html#constructing.responses.from.caches https://svn.tools.ietf.org/svn/wg/httpbis/draft-ietf-httpbis/latest/p6-cache.html#caching.negotiated.responses【讨论】:
【参考方案2】:可能有这样一种情况,服务器可以保证在一定时间内资源的表示只受Foo
的影响,但经过一段时间后,它不能再做任何保证,必须将标头设置为@987654322 @。
到期优先于验证。由于Vary: *
强制重新验证,缓存应该选择Foo
响应,假设它是新鲜的。
【讨论】:
以上是关于是否有任何理由对同一资源使用“Vary: *”和“Vary: Foo”响应?的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何理由使用 (nr & 1 == 0) 而不是 (nr % 2 == 0) 来检查奇偶校验?
是否有任何重要的理由在开关案例中使用枚举的序数,而不是使用枚举?
在C ++中,是否有任何理由产生并立即加入一个线程,而不是直接调用该函数?