是否有任何理由对同一资源使用“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 ++中,是否有任何理由产生并立即加入一个线程,而不是直接调用该函数?

是否有任何理由继续使用 IntentService 处理 GCM 消息?

是否有任何实际理由为 JSON 键使用带引号的字符串?