If-None-Match
概要
If-None-Matchとは、HTTPヘッダのフィールド(項目)の一つで、要求するコンテンツをクライアントがキャッシュとして既に持っている場合、サーバにバージョンを知らせて変更がある場合のみ送信するよう指示するもの。ETagと呼ばれるバージョン識別文字列を送信する。HTTPはWebサーバとWebクライアント(Webブラウザなど)の間でデータの伝送を行なう通信規約(プロトコル)の一つで、通信の制御情報を前半部のHTTPヘッダに記述し、後半のHTTPボディが伝送内容の本体を表す。ヘッダは改行区切りのテキスト(文字)形式で「項目名: 値(改行)」という記法で設定を列挙する。
If-None-Matchはクライアントからサーバへの要求であるHTTPリクエストで一般的に用いられるヘッダ項目の一つで、クライアントが過去に受信してキャッシュに保管しているコンテンツをリクエストする際に、最後に受信したときにサーバから送られてきたETag(Entity Tag)文字列を記載する。
サーバは当該コンテンツの現在のETagと比較し、異なる場合はステータスコード「200 OK」と共に更新されたコンテンツを送信する。同じ場合は更新されていないためステータスコード「304 Not Modified」を返し、コンテンツ本体は送信しない。クライアントは手元にキャッシュされているコンテンツを利用し続ける。
HTTPでは、サーバから最終更新日時を知らせる「Last-Modified」レスポンスヘッダ、クライアントから指定日時以降に更新されていたら送り直すよう指示する「If-Modified-Since」リクエストヘッダもあり、これを用いて更新確認を行うこともできる。現在はETagとIf-None-Matchを用いる方式が一般的で、両方式を併用した場合はIf-None-Matchが優先される。
(2023.1.20更新)