HTTP服务器使用内容的谈判,以服务于一个单一网址的身份或gzip-编码的基础上的客户的 Accept-Encoding 头。

现在说,我们有代理高速缓存喜欢鱿鱼之间的客户和httpd.

如果代理具有高速缓存这两个编码的网址,它如何确定哪些服务?

非gzip实例(最初未曾与 Vary)可以提供的任何客户,但编码的实例(具有 Vary: Accept-Encoding)只能被送到一个客户相同的 Accept-Encoding 头值作用的原始请求。

E.g。歌剧院的发送 "deflate, gzip, x-gzip, identity, *;q=0" 但IE8送 "gzip, deflate".根据该规范,那么,缓存不应该分享内容的编码缓存,两者之间的浏览器。这是真的吗?

有帮助吗?

解决方案

首先,它是恕我直言,不正确的未来发送"有所不同:Accept-Encoding"当该实体实际上通过不同,头部(或其缺席的情况下).

这就是说,规范目前实际上禁止提供服务的响应缓存服务,因为不同标题不符的定义 HTTPbis,第6部分,第2.6.也许这是一个领域,我们应该放松的要求为缓存(你可能需要采取后续行动 IETF HTTP的邮件列表...

更新:事实证明,这是已经记为一个开放的问题;我只是添加了一个问题在我们的问题跟踪,查看 问题147.

其他提示

儒略是正确的,当然。课:始终发送Vary: Accept-Encoding嗅探当Accept-Encoding 下,无论什么响应编码

要回答我的问题,如果你误离开Vary出来,如果代理接收非编码的响应(无Vary),它可以简单地缓存并返回本作(忽略Accept-Encoding)每个后续请求。 鱿鱼执行此

与留出改变最大的问题是,如果缓存接收编码的变种没有因人而异那么它可以响应于其他请求,即使它们的Accept-Encoding表明客户端无法理解的内容发送这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top