Open1

【Browser Cache】ETagについて

まさぴょんまさぴょん

Etagとは?

ETagやブラウザキャッシュの仕組みについて、次の記事の説明がわかりやすい💪🥺🔥
ここから引用します🙏
https://zenn.dev/msy/articles/e81ff7cd52659a

Etagとは、ブラウザキャッシュの仕組みの中で使用されるHTTPレスポンスヘッダーでリソースの特定のバージョンに関する識別子のことです。

Etagがあることでウェブサーバーは、コンテンツが変更されていない場合はレスポンス全体を再送する必要がないので、キャッシュがより効率的になる。

ブラウザキャッシュの設定について

ブラウザキャッシュを設定する際に必要なHTTPレスポンスヘッダーはEtagを含めて以下の通りです。

  1. Expiresヘッダー
  2. Cache-Controlヘッダー
  3. Last-Modifiedヘッダー
  4. Etagヘッダー

Etagヘッダー

EtagヘッダーはLast-Modifiedヘッダーと同様に条件付きGETリクエストを送信することでキャッシュを実現します。

Etagヘッダーの挙動は以下のようになります。

  1. 初回のリソースの取得の際にHTTPサーバはEtagヘッダーに一意のハッシュを付与します。
  2. ブラウザはその受け取ったレスポンスのリソースファイルと、Etagハッシュをブラウザキャッシュに保存します。
  3. 次に同じリソースにアクセスする際に、ブラウザはリクエストヘッダーにIf-None-Matchに先ほどブラウザキャッシュに保存したEtagの値をセットしてリクエストを送信します。
  4. サーバで受け取ったIf-None-Matchのハッシュと初回アクセス時にセットしたEtagハッシュが一致した場合は、リソースの更新がないとみなし、304 Not Modifiedステータスをresponse bodyなしで返送し、キャッシュされたレスポンスのバージョンがまだ使用可能 (新しい) であることをクライアントに通知します。

参考・引用

https://zenn.dev/msy/articles/e81ff7cd52659a

https://cqiita.com/OmeletteCurry19/items/a84d6a7c91df50e7dcd6

https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/ETag