6

ETag を HTTP 応答に追加する場合、メディア タイプを含める必要がありますか? もちろん、ETag が不透明であることは理解していますが、以下に例を示します。

  • application/json で Person を要求するクライアントがあるとします。それを調べて ETag を作成し、その人物の JSON 表現を送り返します
  • ここで、同じクライアントが同じ URI で (変更されていない) 同じ人に別の要求を行いますが、それを application/xml で要求します。

単純に 304 を返すのは明らかに正しくありませんが、私の質問は、2 番目の要求で、ETag は一致するが、Accept ヘッダー (またはコンテンツ ヘッダー) に基づくキャッシュはないと予想するかということです。また、キャッシュに同じ URI からの 2 つの表現が含まれる可能性はありますか?それとも、Content-Type が切り替わるたびに常に無効なキャッシュを持つことになりますか?

4

2 に答える 2

5

異なる表現には、異なるエンティティ タグが必要です。

http://trac.tools.ietf.org/wg/httpbis/trac/ticket/39を参照してください。

于 2011-11-02T07:41:02.097 に答える
-2

異なる表現に対して同じEtagを送信できると思います。指定する限り、応答で2つの異なるエンティティとしてキャッシュする必要があります。これは、RFC 2616で説明されているように、Varyフィールドを使用して実行できます。

http://www.ietf.org/rfc/rfc2616.txt

14.44変化する

Varyフィールド値は、応答が新鮮な間に、キャッシュが再検証なしで後続の要求に応答するために応答を使用できるかどうかを完全に決定する要求ヘッダーフィールドのセットを示します。キャッシュできない応答または古い応答の場合、Varyフィールド値は、表現を選択するために使用された基準についてユーザーエージェントに通知します。

を使用するのVary: Acceptが適切なはずです。

于 2012-07-24T07:48:12.203 に答える