Last-Modified(ラストモディファイド)とは | 意味や読み方など丁寧でわかりやすい用語解説

Last-Modified(ラストモディファイド)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

最終更新日 (サイシュウコウシンビ)

英語表記

Last-Modified (ラストモディファイド)

用語解説

Last-Modifiedは、HTTPプロトコルにおけるレスポンスヘッダーの一つで、Webサーバーがクライアントに対して、要求されたリソース(Webページ、画像、スクリプトファイルなど)が最後にいつ更新されたかを示す日時情報を提供する。このヘッダーは、主にクライアント側(Webブラウザやプロキシサーバーなど)のキャッシュを効率的に管理し、ネットワーク通信量を削減するために利用される重要な仕組みである。

詳細について説明する。Last-Modifiedは、サーバーがHTTPレスポンスの一部としてクライアントに送り返す情報であり、その値はサーバーが保持するリソースの最終更新日時を示す。この日時は、通常「曜日, 日 月 年 時:分:秒 GMT」という特定のフォーマット(RFC 1123で定義されるHTTP-date形式)で表現される。例えば、「Tue, 15 Nov 1994 12:45:26 GMT」といった形式がこれに該当する。この正確な日付と時刻の提供が、後述するWebキャッシュ管理の基盤となる。

クライアント、特にWebブラウザは、一度ダウンロードしたWebページや画像などのリソースをローカルに保存(キャッシュ)することがある。次回同じリソースを要求する際、ブラウザは直接リソースを要求するのではなく、以前受信したLast-Modifiedの値を「If-Modified-Since」というHTTPリクエストヘッダーに含めてサーバーに送信する。サーバーはこのIf-Modified-Sinceの値と、現在持っているリソースのLast-Modifiedの値を比較する。もしサーバー上のリソースがIf-Modified-Sinceで指定された日時以降に変更されていなければ、サーバーは新しいリソース本体を送信する代わりに、「304 Not Modified」というステータスコードのみを返す。この場合、クライアントはローカルにキャッシュされたリソースを再利用することができ、サーバーからのデータ転送が不要となるため、ネットワーク帯域幅の消費を抑え、ページの読み込み速度を向上させる効果がある。これがLast-Modifiedの最も重要かつ基本的な役割である。

If-Modified-Sinceは、Last-Modifiedを利用した代表的な条件付きリクエストの一つである。条件付きリクエストとは、特定の条件が満たされた場合にのみサーバーがアクションを実行する仕組みを指す。Last-Modifiedの存在によって、クライアントは「この日時以降に更新があった場合のみ新しいコンテンツをください」という明確な条件をサーバーに提示できるようになる。これにより、不要なデータ転送を避け、効率的なWebアクセスが可能となる。他にも、リソースが特定の日時以降に「変更されていない場合のみ」という条件を示すIf-Unmodified-Sinceのようなヘッダーも存在するが、Last-Modifiedがその基準となる日付情報を提供する点では共通している。

Last-Modifiedは特にHTMLファイル、CSSファイル、JavaScriptファイル、画像ファイルといった静的なコンテンツに対して非常に有効に機能する。これらのファイルはサーバー上で物理的に存在し、そのファイルシステム上の最終更新日時をLast-Modifiedの値としてそのまま利用できるため、設定も容易である。しかし、データベースからデータを取得して動的に生成されるWebページやAPIのレスポンスなど、動的なコンテンツの場合、Last-Modifiedの値を正確に設定することはより複雑になる。動的コンテンツはアクセスするたびに内容が変わりうるため、厳密な「最終更新日時」を定義するのが難しい場合があるからだ。そのような状況では、サーバーはLast-Modifiedヘッダーを送信しないか、あるいはETag(エンティティタグ)という別のキャッシュ検証メカニズムを利用することが多い。ETagはリソースの内容に基づいたハッシュ値のようなもので、コンテンツが変更されたかどうかをLast-Modifiedよりも詳細に、または動的コンテンツでも適用しやすい形で判断できる。Last-ModifiedとETagはキャッシュ制御の目的は同じだが、それぞれ異なる特性と適用範囲を持つ。

システムを設計する上で、Last-Modifiedはサーバーがリソースの最終更新日時を正確に知っている場合に最も効果を発揮する。しかし、サーバー側の設定ミスや、プロキシサーバーを介したリクエストなど、特定の条件下ではLast-Modifiedの値が不正確になったり、そもそも送信されなかったりする場合があるため注意が必要である。また、Last-Modifiedは秒単位の粒度で日付情報を扱うため、一秒未満の短い間隔でコンテンツが頻繁に更新されるような場合には、その変更を検出できない可能性も存在する。さらに、キャッシュの有効期限をより積極的に制御するために、「Cache-Control」ヘッダーが併用されることが多い。Cache-Controlヘッダーは、キャッシュの存続期間(max-age)や再検証のポリシー(no-cache, must-revalidate)などを直接指定でき、これらの設定がLast-Modifiedによる検証よりも優先される場合がある。Last-Modifiedは、Cache-Controlヘッダーによるキャッシュ有効期限が切れた後、あるいは明確に再検証を指示された場合に、キャッシュの「鮮度」を検証する際の基準として機能する。システムを構築する際には、Last-Modifiedだけでなく、Cache-ControlやETagといった他のキャッシュ関連ヘッダーを適切に組み合わせることで、ユーザー体験とサーバー負荷の両方を最適化することが重要となる。