If-Modified-Since
概要
If-Modified-Sinceとは、HTTPヘッダのフィールド(項目)の一つで、要求するコンテンツの最終更新が指定した日時よりも後だった場合のみ送信するよう指示するもの。クライアント側がすでに持っているコンテンツが再送されることを抑止することができる。HTTPはWebサーバとWebクライアント(Webブラウザなど)の間でデータの伝送を行なう通信規約(プロトコル)の一つで、通信の制御情報を前半部のHTTPヘッダに記述し、後半のHTTPボディが伝送内容の本体を表す。ヘッダは改行区切りのテキスト(文字)形式で「項目名: 値(改行)」という記法で設定を列挙する。
If-Modified-Sinceはクライアントからサーバへの要求であるHTTPリクエストで一般的に用いられるヘッダ項目の一つで、クライアントが過去に受信してキャッシュに保管しているコンテンツをリクエストする際に、最後に受信した日時をサーバに知らせる。
日時の形式は「Sun, 01 Jan 2023 12:34:56 GMT」のように「曜日, 日 月名 西暦 時:分:秒 GMT」の形式で記される。時刻表示にタイムゾーンは使用できず、経度0度におけるグリニッジ標準時(GMT/UTC)に変換しなければならない。
サーバはIf-Modified-Sinceで示された日時以降にコンテンツが更新されている場合、ステータスコード「200 OK」と共に新しいコンテンツ本体を送信する。更新されていない場合、クライアントがキャッシュに保存しているものと同一であると推測されるため、ステータスコード「304 Not Modified」を返しコンテンツは送信しない。
HTTPにはサーバ上のコンテンツのバージョンを識別・指定する「ETag」と呼ばれる仕組みがあり、これを用いて更新されているかを問い合わせるには「If-None-Match」リクエストヘッダを用いる。現在はこちらで更新の有無を識別するのが一般的で、両方指定した場合はIf-Modified-Sinceが無視される。
(2023.1.20更新)