web-dev-qa-db-ja.com

プロキシはETagをどのように処理しますか?

パフォーマンスを向上させるためにETagを使用しています。サーバー、クライアント、プロキシで有効なEtagを使用することにしました。

しかし、プロキシがETagを保存した場合、これはどのように処理されますか?プロキシは引き続きWebサイトにETagが有効かどうかを尋ねますか、それともプロキシ自体が「これを知っています。サーバーに尋ねる必要はありません」と答えるだけですか。

つまり、プロキシでのETagキャッシュが有効になっている場合でも、次のシナリオは機能しますか?

  1. ブラウザがリクエストを行います。 ETag「ABBA」が返されます
  2. ブラウザはサーバーに対して別の要求を行います。 ETag "ABBA"が認識され、304が返されます2.1ブラウザはローカルキャッシュを使用します
  3. ブラウザはサーバーに別のリクエストを行い、ETag「ABBA」を送信します。今回、サーバーはデータが変更されたと判断したため、新しいEtagを含む新しい応答を返します。

クライアントとサーバーの間にETagを知っているプロキシがある場合でも、Etagが有効かどうかをサーバーに尋ねますか、それともプロキシがEtagを知っていれば、リクエストはそこで終了しますか?

4
user107250

プロキシサーバーの動作は、ほとんどの場合、バックエンドサーバーによって設定された Cache-Control ヘッダーによって制御されます。

リソースの有効期限が切れていない限り、プロキシはキャッシュからリソース(ETagなどの関連するすべてのメタデータを含む)を提供します。リソースをキャッシュに保持できる限り、プロキシはサーバーに接続して元のコンテンツを検証する必要はありません。

Cache-Controlヘッダーが、リソースがキャッシュから期限切れになるか、再検証される必要があることを指示すると、プロキシサーバーはサーバーに再度接続して元のリソースを検証します。 ETagがサーバー上で変更されていない場合は、再度ダウンロードする必要はありません。同じオブジェクト(ただし、キャッシュ制御のタイミングが更新されている)をキャッシュに残すことができます。

このリソース 興味があるかもしれません。

3
HBruijn