キャッシュ状態の確認
最終更新日 2022-05-06
Web サイトにあるコンテンツのキャッシュ状態を確認することは、トラブルシューティングをする際に役立ちます。コントロールパネルまたは curl コマンド (サポートされている多数のプロトコルの一つを使用して、サーバーとの間で URL 構文を使用してデータを転送するオープンソースのコマンドラインツール) を使用して、Fastly のキャッシュノードにキャッシュされたオブジェクトをチェックし、提供された情報を基に、オブジェクトのステータスやレスポンスタイム、コンテンツハッシュを調べることができます。
コントロールパネルを使用する
Fastly コントロールパネルを利用してコンテンツのキャッシュ状態を確認する方法は、以下の通りです:
- Fastly コントロールパネルにログインします。
- Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインでの検索が行えます。
- [Check Cache] ボタンをクリックします。[Check Cache] ウィンドウが表示されます。
- Full URL path フィールドに、オブジェクトのフルパスを入力します (例:
http://www.example.com/object.html
)。 - [Check Cache] ボタンをクリックします。[Check Cache] 画面に結果が表示されます。
この情報は、Fastly のキャッシュサーバーに保持しているコンテンツを検証するために、利用することができます。もしコンテンツのハッシュ値が各キャッシュサーバーで違っている場合、一般的にキャッシュに問題があることを示しています。
curl コマンドの利用方法
リクエストが Fastly ネットワークにキャッシュされているかどうかを確認する最も簡単な方法は、Fastly コントロールパネルのキャッシュの確認機能を使用することですが、コマンドラインの利用を希望される場合は、デバッグ目的で 2つの curl コマンドのいずれかを使用することもできます。
- シンプルな curl コマンドでは、対象となるコンテンツのリクエストとレスポンスヘッダを表示します。
- Fastly-Debug ヘッダーを用いた curl コマンドでは、
Fastly-Debug
ヘッダーを利用することでシンプルな curl コマンドでは表示されない情報を表示させることができます。
シンプルな curl コマンドの使用
以下の curl コマンドは、対象となるコンテンツのリクエストとレスポンスヘッダを表示します。
$ curl -svo /dev/null www.example.com/index.html
www.example.com/index.html
の箇所は、テストを行いたいオブジェクトのパスに置き換えてください。
例えば、使用するcurl -svo /dev/null www.example.com
と次のような部分が出力されます。
1[...]2
3< Age: 1424< X-Served-By: cache-jfk1041-JFK, cache-ord1720-ORD5< X-Cache: HIT, HIT6< X-Cache-Hits: 1, 77
8[...]
この出力は、キャッシュ内のオブジェクトの現在の経過時間を含みます。また X-Served-By
に2つのノードの情報が表示されていることから、オリジンシールドが有効化されていることが分かります。最も興味深いのは X-Cache
ヘッダーです。適切にキャッシュされたオブジェクトは、、X-Cache: HIT``X-Cache: HIT, MISS
、またはX-Cache: HIT, HIT``X-Cache: MISS, HIT
の値を表示します。
Fastly-Debug ヘッダーを伴う curl コマンドの利用
Fastly-Debug
ヘッダーを利用するとシンプルな curl コマンドでは取り除かれるデバッグ情報を確認することができます。
$ curl -svo /dev/null -H "Fastly-Debug:1" www.example.com/index.html
www.example.com/index.html
の箇所は、テストを行いたいオブジェクトのパスに置き換えてください。
例えば、オプションのオリジンシールドを使用し、TTL を86400 (24時間) に設定した場合、このSurrogate-Control
コマンドcurl -svo /dev/null -H "Fastly-Debug:1" www.example.com
では次のような出力が得られます。
1[...]2
3< Surrogate-Control: max-age=864004< Surrogate-Key: articles articles/1 articles/25
6[...]7< Age: 4038< Fastly-Debug-Path: (D cache-ord1722-ORD 1470672957) (F cache-ord1743-ORD 1470672629) (D cache-jfk1041-JFK 1470672629) (F cache-jfk1030-JFK 1470672554)9< Fastly-Debug-TTL: (H cache-ord1722-ORD 85997.246 0.000 403) (H cache-jfk1041-JFK - - 75)10< X-Served-By: cache-jfk1041-JFK, cache-ord1722-ORD11< X-Cache: HIT, HIT12< X-Cache-Hits: 1, 613
14[...]
サロゲートキーが存在するため、Fastly-Debug
ヘッダーではそれを公開しています。シンプルな curl コマンドと同様にキャッシュされてからの経過時間も表示されています。それらの情報に加え、Fastly-Debug
ヘッダーは以下のようなデバッグ情報も表示します。
Fastly-Debug ヘッダーによって表示される情報
Fastly-Debug Path
にはどのキャッシュサーバーがフェッチや配信を行ったかや、オブジェクトの TTL 情報が記録されます。シールディングを利用している場合はエッジ POP の情報が先に記録され、続いてシールド POP の情報が記録されます。
D
は、エッジまたはシールドにあるどのキャッシュがvcl_deliver
を実行したものなのかを、キャッシュ名前で表しています。F
は、エッジまたはシールドにあるどのキャッシュがvcl_fetch
を実行したものなのかを、キャッシュ名前で表しています。- 各サーバー名の横に表示されている数字は、タイムスタンプを表示しています。
オリジンシールドを有効にしている場合、このヘッダーでは、通常4つのキャッシュサーバーが表示されます。稀なケースとして、あるキャッシュサーバーが当該オブジェクトのクラスタ内のエッジとシールドの両方として存在する場合、2つまたは3つのキャッシュが表示されることがあります。
Fastly-Debug-TTL
では、HIT または MISS の情報を表示します。
H
は、HIT を意味し、キャッシュサーバーに当該オブジェクトが存在したことを示しています。M
は、MISS を意味し、リクエストしたときには、当該オブジェクトがキャッシュサーバーに存在していなかったことを示しています。
3つの数字の情報はそれぞれ以下の情報を含みます :
- 1つ目の数字 オブジェクトの残存 TTL
- 2つ目の数字 グレース期間
- 3つ目の数字 オブジェクトがキャッシュされてからの経過時間
上記の3つの情報を見るためには、数回リクエストを実行する必要がある可能性があります。当該クラスターノードにリクエストするか、もしくはすでに一時メモリーに当該コンテンツが存在しているキャッシュサーバーにリクエストした場合に表示されます。
X-Served-By
では、当該リクエストに対応したオリジンシールドまたはエッジのキャッシュサーバーが表示されます。オリジンシールド POP が1番目に表示され、エッジ POP が2番目に表示されます。
X-Cache
は、リクエストがデータセンターにとって HIT であるか MISS であるかを示します。
注意
当社のシールドデバッグドキュメントでは、シールドサービスの X-Served-By
、X-Cache
、および X-Cache-Hits
ヘッダーを理解するための詳細な情報を提供しています。