13

この質問は、すべてが同じ重みであり、私のブログのこのコメントによって促された場合のHTTPヘッダー「Accept-Encoding」のメディアタイプの優先順位に関するものです。

バックグラウンド:

Accept-Encodingヘッダーは、ブラウザが受け入れることができるメディアタイプのコンマ区切りリストを取ります(例:gzip、deflate)

他のメディアタイプを優先するように品質係数を指定することもできます。たとえば、「gzip; q = .8、deflate」の場合、deflateが優先されますが、この質問には関係ありません。注意:「q = 0」のタイプは、「受け入れられない」ことを意味します。

RFC2616は、メディアタイプ定義の「最も具体的な参照」を最初に重み付けする必要があるとも述べています。つまり、「text/html」ではなく「text/html; level=1」を使用する必要があります。これは質問にも関係ありません。

質問:

次の場合、どのメディアタイプが優先されますか?

Accept-Encoding: gzip,deflate

どちらのタイプも同等の品質係数1を持ち、どちらのタイプもブラウザに「許容可能」であるため、どちらかを使用できます。入力された最初のタイプは「優先」されるべきだといつも思っていましたが、 RFCにはこの特定のケースの特定の例や優先はないようです。

4

2 に答える 2

8

RFC のどこか、または関連する RFC で、この形式のすべてのフィールドで最初のものが優先されると述べていると思います。

ただし、gzip と deflate の特殊なケースでは、オーバーヘッドが少ないため、可能であれば deflate を使用する必要があります (ヘッダーとフッターが少なく、adler32 チェックサムはまだありますが、上部に crc32 はありません)。それ以外はまったく同じです。実際のデータは、どちらも同じ方法で圧縮されます。これは、deflate が高速であり、出力が小さいことを意味します。負荷の高いページでは、これらの両方がはるかに重要になります。gzip の余分なヘッダーのほとんどは、とにかくこのコンテキストでは役に立たない UNIX スタイルのファイル許可のようなものです。

実際、クライアントは信頼性のために gzip を提供する必要があり、サーバーはパフォーマンスのために deflate を提供する必要があります。追加のオーバーヘッドは、ロードするページごとに 1 回発生する場合よりも、1 秒間に数千回発生する場合の方がはるかに重要です。

私自身のサイトでは、最初に deflate をチェックし、可能であればそれを使用してから、gzip をチェックします。どちらも使用できない場合は、プレーンテキストで送信します。どの言語を使用しているかはわかりませんが、それを行うには約 5 行の ASP.NET が必要です。

于 2010-07-20T18:10:13.160 に答える
2

ここにはクライアント側の設定はありません。あなた(サーバー側)が好むものを1つ選んでください。

于 2010-07-12T00:03:30.323 に答える