304 Not Modifiedレスポンスとは?
304 Not Modified HTTPサーバー・レスポンス・コードは、リクエストされたリソースが前回読み込まれたときから変更されていないこと、つまり再度転送する必要がないことを示します。ブラウザにとっては、キャッシュされたバージョンのリソースをユーザーに表示できることを意味します。Googlebotのようなクローラーにとっては、ページが何も変更されていないため、再クロールする必要がないことを意味します。
仕組み
ここでは、304 Not Modifiedレスポンスがどのように機能するかを簡単に説明する:
-
初回リクエストクライアント(ブラウザまたはクローラー)が初めてウェブサーバーにリソースをリクエストすると、サーバーはリクエストされたリソースを200 OKのHTTPコードとETagと呼ばれるハッシュコードとともに送信します。クライアントはページ/リソースをリクエストした時刻も記録します。
-
その後のリクエストクライアントがリソースを再度リクエストすると、サーバはクライアントからの
If-None-Match
ヘッダやIf-Modified-Since
ヘッダをチェックします。これは条件付き HTTP リクエストとして知られています。If-None-Matchには
ETag(コンテンツのハッシュコード)が含まれます。これがサーバー上の値と一致する場合、コンテンツが変更されていないことを示し、再度読み込む必要はありません(コンテンツが変更されると、そのハッシュコードも変更されます)。If-Modified-Sinceには
、クライアントが最後にコンテンツをリクエ ストした日時が含まれます。サーバーがこの日時以降にコンテンツが変更されていないことを確認した場合、クライアントにリソースを送信する必要はありません。
-
サーバーのレスポンスいずれの場合も、コンテンツが変更されていなければ、サーバーは304 HTTPコードで応答する。
If-None-Matchと
If-Modified-Sinceの
両方が使われている場合、If-None-Matchが
If-Modified-Sinceより
優先される。
ブラウザとクローラーの動作
ブラウザがサーバーから304 Not Modified HTTPコードを受け取ると、キャッシュされたバージョンをユーザーに表示するため、クライアント側のリダイレクトコードの1つになります。クローラーにとっては、304 レスポンスを受け取ることで、同じコンテンツの再ダウンロードを避けることができ、帯域幅とリソースを節約することができます。
なぜ304レスポンスコードが重要なのか?
小規模なウェブサイトの場合、304 HTTPコードによるキャッシュの利点はそれほど大きくないかもしれません。しかし、大規模なWebサイトでは、304レスポンスコードは大きな利点を提供します:
- パフォーマンスの最適化キャッシュされたコンテンツを活用することで、ブラウザはユーザーにより速くページをロードし、全体的なユーザー体験を向上させることができます。
- クロール予算の管理大規模サイトの場合、クロール予算の管理は極めて重要である。Googleのクローラーは変更のないページを再クロールしないため、新しいコンテンツや更新されたコンテンツに集中することがで きます。これにより、新鮮なコンテンツがより効率的にインデックスされるようになります。
304 Not Modifiedを使用する際のベストプラクティス
- 適切なキャッシュヘッダーを設定する サーバーが適切な
ETagと
Last-Modified
ヘッダーを送信するように設定されていることを確認してください。 - キャッシュ効率の監視サーバーログを定期的にチェックし、304 レスポンスの発行頻度を確認し、必要に応じてキャッシュポリシーを調整します。
- コンテンツ配信の最適化効率的なキャッシングメカニズムをサポートするコンテンツ配信ネットワーク(CDN)を利用して、待ち時間を短縮し、ロード時間を改善する。
HTTPステータスコードの詳細や、ウェブパフォーマンスとSEOのベストプラクティスについては、Mozilla Developer Network(MDN)やGoogle's Web Fundamentalsなどの権威ある情報源を参照してください。