INDEX
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-Modified
やETag
を設定し、キャッシュが正確に機能するようにします。 - クライアント側の実装を確認
クライアントが条件付きリクエストを送信しない場合、304レスポンスは返されません。
関連するHTTPステータスコードとの比較
304 Not Modifiedと関連性のあるステータスコードについて解説します。
- 200 OK: リクエストが成功し、リソースが返される通常のレスポンス
- 412 Precondition Failed: 条件付きリクエストの条件が満たされない場合に返されるコード
これらの違いを理解することで、適切な用途で304ステータスコードを利用できます。