怎么HTTP proxy caches决定之间提供服务的身份-对gzip-编码的资源?
-
22-08-2019 - |
题
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表明客户端无法理解的内容发送这一点。