当谈到是否做的是事务的当前状态
Transfer-Encoding: gzip
或
Content-Encoding: gzip
当我想允许与例如带宽有限的客户 表示它们愿意接受压缩响应和服务器说了算是否要压缩 。
后者正是如Apache的mod_deflate模块和IIS做,如果你让它采取压缩的照顾。 根据内容的大小被压缩,它会做额外的Transfer-Encoding: chunked
。
它还将包括一个Vary: Accept-Encoding
,这已经暗示了这个问题。 Content-Encoding
似乎是实体的一部分,因此更改Content-Encoding
量的实体的变化,即不同的Accept-Encoding
头指如高速缓存不能使用,否则相同的实体的缓存版本。
有没有办法,我错过了(这不是在某些阿帕奇新闻组很长的线埋藏的消息中)在此一个明确的答案?
我现在的感觉是:
- 传输编码实际上将做正确的方法是什么大多与内容编码由现有的服务器和客户端implentations完成
- 内容编码,因为它的语义含义,怀揣着几个问题(我应该在服务器尽到
ETag
时,透明压缩的响应?) - 原因是chicken'n'egg:浏览器不支持,因为服务器不因为浏览器不
所以我假设正确的方式将是一个Transfer-Encoding: gzip
(或者,如果我还块体,它会成为 Transfer-Encoding: gzip, chunked
)。 并没有理由触及Vary
或ETag
或在这种情况下,任何其他的头,因为它是一个传输层的事情。
现在我没有太在意的“逐hop'岬Transfer-Encoding
,一些人似乎担心首先,因为代理可以解压缩和非压缩向前到客户端。 然而,代理还不如将其转发为-IS(压缩),如果原来的请求具有正确的Accept-Encoding
头,这是我所知道的是所有浏览器的情况下,给定的。
顺便说一句,这个问题至少十年的老,看到如https://bugzilla.mozilla.org/show_bug.cgi?id=68517 。
任何对此的澄清将不胜感激。 无论是在什么被认为是符合标准的术语,什么是符合实际情况。 例如,仅支持透明的“内容编码” HTTP客户端库将针对实用性的理由。