curlでETagと304を観察する ― HTTPキャッシュを手で確かめる

ネットワーク・RFCカテゴリを表すパンダのイラスト ネットワーク・RFC

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。HTTPの条件付きリクエスト仕様とcurl公式資料を確認し、ETagとIf-None-Matchを観察する方法を整理しています。

検証ステータス:📘 HTTP/curl公式仕様確認済み・実通信未確認

ETagは「ブラウザのキャッシュ用の謎の文字列」ではなく、前に見た表現と今の表現が同じかをサーバーへ問い合わせるためのvalidatorとして観察できます。

まず試す

ETagを返す公開URLで次を実行します。

curl -I https://example.com/

対象によってETagが無いこともあります。その場合は別サイトを勝手に大量アクセスせず、自分の検証環境やETagを返すAPIで確認してください。

ETagが "abc" だったと仮定すると、次の形です。

curl -i -H 'If-None-Match: "abc"' https://example.com/

条件が成立すれば304 Not Modifiedになる可能性があります。

ここを見る

200と304の違いを見ます。304では「前に持っている表現を再利用できる」ため、同じ本文を再送しない仕組みにつながります。

sequenceDiagram
Client->>Server: GET
Server-->>Client: 200 + ETag
Client->>Server: If-None-Match
Server-->>Client: 304 Not Modified

1か所変えてみる

ETagをわざと存在しない値へ変えます。条件が一致しなければ通常の表現が返る違いを観察できます。

仕事で使うなら

Web担当者なら「更新したのに古いページが見える」、API担当なら「毎回大きなJSONを取得している」、事務系の自動化担当なら「変更がないデータを毎回処理している」といった場面の理解に役立ちます。

ただしETagをファイルの暗号学的ハッシュだと決めつけないでください。生成方法はサーバー実装次第です。

まとめ

ETagはキャッシュの仕組みを手で体験する入口です。レスポンスヘッダーを見て、If-None-Matchを1回付け、200/304の違いを観察するとHTTPの条件付きリクエストが具体化します。

公式情報・一次情報

  • RFC 9110 HTTP Semantics: https://www.rfc-editor.org/rfc/rfc9110

  • curl manual: https://curl.se/docs/manpage.html

文書情報

記事タイトル
curlでETagと304を観察する ― HTTPキャッシュを手で確かめる
作成日
更新日
Source URL
https://papanda925.com/?p=15834

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました