HTTP 服务器使用内容协商来提供基于客户端Accept-Encoding
标头的单个 URL 标识或 gzip 编码。
现在假设我们在客户端和 httpd 之间有一个像 squid 这样的代理缓存。
如果代理已经缓存了 URL 的两种编码,它如何确定要服务哪个?
非 gzip 实例(最初不与 一起提供Vary
)可以提供给任何客户端,但编码实例(具有Vary: Accept-Encoding
)只能发送给具有与Accept-Encoding
原始请求中使用的相同标头值的客户端。
例如 Opera 发送"deflate, gzip, x-gzip, identity, *;q=0"
但 IE8 发送"gzip, deflate"
。根据规范,缓存不应该在两个浏览器之间共享内容编码的缓存。这是真的?