HTTP:"gzip,deflate"的首选Accept-Encoding是什么?

Dav*_*som 8 compression header http interpretation rfc2616

这个问题是关于HTTP标题"Accept-Encoding"的媒体类型的优先顺序,当它们具有相同的权重并且在我的博客上已被此评论提示时.

背景:

Accept-Encoding标头采用逗号分隔的媒体类型列表,浏览器可以接受例如gzip,deflate

品质因数也可以被指定为优先考虑例如在的情况下,其他的媒体类型"的gzip; Q = 0.8,放气",放气是优选的-但是不相关的这个问题.注意:"q = 0"的类型表示"不可接受".

RFC2616还指出应首先对媒体类型定义的"最具体的引用"进行加权.即"text/html; level = 1"应该用于"text/html" - 这也与问题无关.

题:

在以下情况中,哪种媒体类型优先?

Accept-Encoding: gzip,deflate
Run Code Online (Sandbox Code Playgroud)

两种类型都具有1的等效品质因数,并且这两种类型对浏览器都是"可接受的" - 因此可以使用任何一种类型.我总是假设输入的第一个类型应该是"首选",但在RFC中似乎没有特定的例子或偏好.

GEo*_*yar 6

我相信RFC或相关RFC中的某个地方,它声明第一个是这种格式的所有字段的首选.

但是,在gzip vs deflate的特殊情况下,你可能应该使用deflate,因为你可以降低开销(更少的页眉和页脚,虽然它仍然有一个adler32校验和,但它没有顶部的crc32).除此之外,它们完全一样.对于两者,实际数据以相同的方式压缩.这意味着放气既快又产生较小的输出.这两个在重负载的页面上变得更加重要.gzip中的大多数额外标题都是unix样式文件权限之类的东西,无论如何在这种情况下都没用.

实际上,由于可靠性,客户端应该希望为gzip服务,并且服务器应该由于性能而希望服务于deflate.如果每秒发生数千次,那么额外的开销就更重要了.

在我自己的网站上,我首先检查deflate并使用它,如果可以,那么我检查gzip.如果我也不能使用,我只是发送纯文本.我不知道你使用的语言是什么,但是大约有5行ASP.NET.