1月15日開催!現年収非公開で企業からスカウトをもらってみませんか?PR

転職ドラフトでリアルな市場価値を測る。レジュメをもとに、企業から年収とミッションが提示されます。

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Etag / Cookie / Last-Modified の違い

Posted at

はじめに

この記事書くきっかけは、いつだったか、クライアント側のメッセージが更新されないという事態に会ったことです。

その時に、先輩社員が「もしかしたらEtagが悪さしているのかもしれない」という話をしていました。

その時はEtagということばが初耳でなんのことかさっぱりだったので、調べた内容をまとめる目的で書いています。

image.png

本記事では、Etagがキャッシュの仕組みの中でどのように機能し、どんな影響を与えるか、さらにLast-ModifiedCookieとの違いについて説明していきます。

Etag

Etag(Entity Tag) は、HTTPキャッシュの一種で、リソースのバージョンを識別するためのユニークな識別子を提供し、これによって、クライアントはリソースが最新かどうかを効率的に確認できます。

具体的には、サーバーがレスポンス時にリソースに一意の識別子(Etag)を付けて返します。この識別子はリソースの内容が変更されると変わります。

その後、クライアントが再度リソースをリクエストする際、If-None-Matchヘッダーを使って、以前取得したEtagと照合し、サーバーに「このリソースが変更されていなければ、再取得しないでください」と伝えます。
変更がない場合、サーバーは304 Not Modifiedレスポンスを返し、リソースを再取得せずにキャッシュを使用します。

Etagを利用することで、サーバーの負荷を減らし、通信量を削減することができます。Etagによりリソースの変更が厳密に確認できるため、より精密にキャッシュ管理が可能になります。

Etag
Etagを使うことで、リソースが変更されていない場合に無駄なデータ転送を防げるため、効率的にキャッシュを利用できる!

Cookieと何が違うの?🍪

image.png

Cookieは、クライアント側に小さなデータを保存し、次回以降のリクエスト時にそのデータを送信することで、ユーザーを識別した状態を維持します。

サーバーがset-Cookieヘッダーを使って指示し、クライアント(ブラウザ)が保存・送信することで、動的なデータやユーザー固有の情報を保持することが出来ます。

HTTPの特徴であるステートレスを保管してくれる機能ですね。

Cookieは主に、以下のような用途で使われています。

  • ログイン情報の管理
  • ショッピングカートの情報
  • ユーザーの行動トラッキング(広告表示の最適化など)

Cookie
主にサーバーとブラウザ間のセッション管理や、認証情報、ユーザー設定の保持に使用される。

実質、Last-Modifiedも一緒じゃない?

image.png

Last-Modifiedはリソースが最後に変更された日時をサーバーがクライアント側に通知する目的で利用されます。

Last-Modifiedを使用したキャッシュの仕組み:

  1. クライアントはリソースのキャッシュを使用する際、If-Modified-Sinceヘッダーにこの日時を指定し、サーバーに変更がないか問い合わせます。
  2. サーバーが「変更なし」と判断すれば、304 Not Modifiedを返して、キャッシュを使用します。

ただし、時間に依存するため、微細な変更が検知できない可能性があるらしいです。

そのため、

  • Last-Modifiedはシンプルで負荷が軽く、静的なリソースや大雑把な変更検知で十分な場合に適している
  • Etagは精度が高く、動的コンテンツや細かい変更を検知する必要がある場合に適している。

という違いがあるようです。

どっちか一個じゃないといけないわけではなく、多くのサーバーは、両方を組み合わせて用することで、効率的なキャッシュ管理と確実な変更検知を実現しています。

まとめ

  • Etagはリソースの変更検知を厳密に行うために利用され、サーバー負荷の軽減や通信量削減に貢献する
  • Cookieはユーザー識別やセッション管理に使用され、キャッシュ管理とは異なる用途で活躍する
  • Last-Modifiedはシンプルかつ負荷の軽い仕組みで、静的リソースのキャッシュ管理に適している
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Comments

No comments

Let's comment your feelings that are more than good

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?