这个问题是关于HTTP标题“Accept-Encoding”的媒体类型的优先顺序,当所有权重相等并且this comment提示我博客。
Accept-Encoding标头采用逗号分隔的媒体类型列表,浏览器可以接受该列表。 gzip的,放气
还可以指定品质因数以优先考虑其他媒体类型,例如在“gzip; q = .8,deflate”的情况下,首选deflate - 但与此问题无关。注意:“q = 0”的类型表示“不可接受”。
RFC2616还指出应首先对媒体类型定义的“最具体的引用”进行加权。即“text / html; level = 1”应该用于“text / html” - 这也与问题无关。
在以下情况中,哪种媒体类型具有优先权?
Accept-Encoding: gzip,deflate
两种类型都具有等效的品质因数1 ,并且这两种类型对于浏览器都是“可接受的” - 因此可以使用任何一种类型。我总是假设输入的第一个类型应该是“首选”,但RFC中似乎没有针对此特定情况的具体示例或偏好。
答案 0 :(得分:5)
我相信RFC或相关RFC中的某个地方,它声明第一种格式适用于此格式的所有字段。
然而,在gzip vs deflate的特殊情况下,你可能应该使用deflate,因为你可以降低开销(更少的页眉和页脚,虽然它仍然有一个adler32校验和,但它没有顶部的crc32 )。除此之外,它们完全一样。对于两者,实际数据以相同的方式压缩。这意味着放气既快又产生较小的输出。这两个在重负载的页面上变得更加重要。 gzip中的大多数额外标题都是unix样式文件权限之类的东西,无论如何在这种情况下都没用。
实际上,由于可靠性,客户端应该希望为gzip服务,并且服务器应该由于性能而希望服务于deflate。如果每秒发生数千次,那么额外的开销就会比你加载的每一页都发生一次更重要。
在我自己的网站上,我首先检查deflate并使用它,如果可以,那么我检查gzip。如果我也不能使用,我只是发送纯文本。我不知道你使用的语言是什么,但是大约需要5行ASP.NET。
答案 1 :(得分:0)
此处没有客户端偏好。只需选择一个你(服务器端)更喜欢的内容。