304 Not Modified リソースが変更されていないことを示すHTTPステータスコード

スポンサーリンク
スポンサーリンク

304 Not Modifiedについて

304 Not Modifiedの概要

リソースが変更されていないことを示すHTTPステータスコード

304 Not Modified

概要 304 Not Modifiedは、クライアントのキャッシュに保存されているリソースが最新のものであり、サーバー側で変更がないことを示すHTTPステータスコードです。このコードは通常、条件付きリクエスト(If-Modified-SinceやIf-None-Matchヘッダーを使用)に対するレスポンスとして返されます。

クライアントは提供された情報を元に選択を行い、適切なリソースにアクセスする必要があります。

304 Not Modifiedはどのような時に使用されるか

  • クライアントがキャッシュされたリソースを検証するために条件付きリクエストを送信した場合
  • サーバー側でリソースが変更されていない場合
  • 効率的なリソース配信のためにキャッシュの有効性を確認する場合

SEOに関する影響

304 Not Modifiedは、キャッシュを活用してサーバーとクライアント間の通信を効率化するため、SEOにおいて有益です。検索エンジンのクローラーも304レスポンスを受け取ることで、リソースが変更されていない場合に再ダウンロードを省略し、クロールの効率が向上します。

304 Not Modifiedの事例

キャッシュされたリソースの検証

GET /image.png HTTP/1.1  
Host: example.com  
If-Modified-Since: Wed, 01 Nov 2023 12:00:00 GMT  

レスポンス例:

HTTP/1.1 304 Not Modified  

解説: クライアントがリソースの更新状況を確認するためにIf-Modified-Sinceヘッダーを送信し、サーバーがその日時以降に変更がないことを検出した場合に304レスポンスを返します。この場合、リソースの再送信は不要であり、クライアントはキャッシュされたデータを引き続き使用できます。

ETagによる検証

GET /document.html HTTP/1.1  
Host: example.com  
If-None-Match: "abc123"  

レスポンス例:

HTTP/1.1 304 Not Modified  

解説: クライアントがIf-None-MatchヘッダーにETag(リソースの一意な識別子)を送信し、サーバー側でETagが一致する場合に304レスポンスを返します。この方法は、リソースの変更を効率的に検出し、必要な場合にのみ更新をダウンロードする仕組みを提供します。

利用における注意点

304ステータスコードを使用する際の注意点:

  • キャッシュの適切な管理
    リソースに適切なLast-ModifiedETagを設定し、キャッシュが正確に機能するようにします。
  • クライアント側の実装を確認
    クライアントが条件付きリクエストを送信しない場合、304レスポンスは返されません。

関連するHTTPステータスコードとの比較

304 Not Modifiedと関連性のあるステータスコードについて解説します。

  • 200 OK: リクエストが成功し、リソースが返される通常のレスポンス
  • 412 Precondition Failed: 条件付きリクエストの条件が満たされない場合に返されるコード

これらの違いを理解することで、適切な用途で304ステータスコードを利用できます。