HTTP 304(サンマルヨン)とは | 意味や読み方など丁寧でわかりやすい用語解説
HTTP 304(サンマルヨン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
HTTP 304 (サンマルヨン)
英語表記
Not Modified (ノットモディファイド)
用語解説
HTTP 304は、HTTPステータスコードの一つで、「Not Modified(変更なし)」を意味する。これは、クライアント(ブラウザなど)がサーバーに対してリソース(ウェブページ、画像、ファイルなど)を要求した際に、そのリソースが前回要求時から変更されていないことをサーバーが通知するために使用される。
HTTP通信では、クライアントはサーバーにリクエストを送信し、サーバーはそれに応じたレスポンスを返す。通常、リクエストされたリソースが正常に返される場合はHTTPステータスコード200 OKが使用される。しかし、リソースが変更されていない場合、サーバーはリソースの内容を再度送信する必要がないため、304 Not Modifiedを返すことで通信量を削減し、効率的なウェブの利用を促進する。
HTTP 304の仕組みは、主に条件付きGETリクエストと呼ばれる技術に基づいている。クライアントはリクエストヘッダーに「If-Modified-Since」や「If-None-Match」といったフィールドを含めることで、リソースの更新日時やエンティティタグ(ETag)に基づいて、リソースの変更の有無をサーバーに問い合わせる。
If-Modified-Sinceは、クライアントが最後にリソースを取得した日時をサーバーに伝えるためのヘッダーフィールドである。サーバーは、リクエストされたリソースの最終更新日時とIf-Modified-Sinceの値とを比較し、リソースがそれ以降に変更されていない場合、HTTP 304を返す。
If-None-Matchは、リソースのETag(エンティティタグ)をクライアントがサーバーに伝えるためのヘッダーフィールドである。ETagは、リソースの内容に基づいてサーバーが生成する一意の識別子であり、リソースの内容が変更されるとETagも変更される。サーバーは、リクエストされたリソースの現在のETagとIf-None-Matchの値とを比較し、一致する場合、HTTP 304を返す。
サーバーがHTTP 304を返す場合、レスポンスボディは通常空である。これは、リソースの内容が変更されていないため、クライアントは自身のキャッシュに保存されているリソースのコピーを使用すれば良いからである。レスポンスヘッダーには、Date、Cache-Control、Expiresといったキャッシュに関する情報が含まれることがある。これらのヘッダーは、クライアントがキャッシュをどのように管理すべきかを指示する。
HTTP 304を使用するメリットは、主に以下の点が挙げられる。
- 帯域幅の節約: リソースの内容を再送信する必要がないため、サーバーとクライアント間のデータ転送量を削減できる。
- サーバーの負荷軽減: リソースの内容を生成したり、データベースから取得したりする処理を省略できるため、サーバーの負荷を軽減できる。
- クライアントの応答速度向上: キャッシュされたリソースを使用するため、リソースのダウンロード時間を短縮できる。
HTTP 304は、ウェブブラウザだけでなく、APIクライアントやモバイルアプリケーションなど、様々な種類のクライアントで利用されている。特に、頻繁にアクセスされるリソースや、変更頻度の低いリソースに対して有効である。
HTTP 304を適切に活用するためには、サーバー側の設定とクライアント側のキャッシュ管理が重要となる。サーバーは、リソースの最終更新日時やETagを正確に管理し、条件付きGETリクエストに対して適切に応答する必要がある。クライアントは、サーバーから返されたキャッシュに関する指示に従い、キャッシュを適切に管理する必要がある。
システムエンジニアは、HTTP 304の仕組みを理解し、ウェブアプリケーションやAPIの設計において、キャッシュを効果的に活用することで、パフォーマンスの向上やコスト削減に貢献できる。また、HTTP 304に関する問題が発生した場合、HTTPヘッダーやキャッシュの設定などを確認し、原因を特定して解決する必要がある。例えば、キャッシュの設定が誤っている場合、本来キャッシュされるべきリソースが毎回ダウンロードされたり、逆に更新されたリソースがキャッシュから古いものが表示されたりする可能性がある。