オリジンサーバーが 2xx 以外のステータスコードを返した場合、Edge Security Acceleration (ESA) の POP (Point of Presence) はそのステータスコードをキャッシュできます。キャッシュ有効期間中、POP はリクエストに直接応答します。このプロセスにより、繰り返しオリジンリクエストを送信することを回避し、オリジンサーバーの負荷を軽減します。
利用シーン
通常、ESA の POP は、オリジンサーバーから 2xx ステータスコードでリソースを正常にフェッチした場合にそのリソースをキャッシュします。しかし、オリジンサーバーが 404 や 502 などの 2xx 以外のステータスコードを返した場合、すべてのリクエストをオリジンサーバーに送り返すことを回避できます。ステータスコードのキャッシュ TTL (Time-To-Live) を設定します。ESA の POP はステータスコードで直接応答し、ご利用のオリジンサーバーの負荷を軽減します。
典型的な利用シーン
ファイル A がオリジンサーバーから削除されたにもかかわらず、クライアントがアクセスし続けています。ESA の POP はファイル A をキャッシュしていないため、ファイル A に対するすべてのリクエストがオリジンサーバーに送信されます。オリジンサーバーは 404 ステータスコードで応答します。これにより、オリジンサーバーの負荷が大幅に増加します。
ESA の POP が 404 ステータスコードをキャッシュするように設定すると、POP は最初のオリジンフェッチ後にそれをキャッシュします。キャッシュ有効期間中、後続のリクエストは ESA の POP から直接 404 応答を受け取ります。これにより、オリジンフェッチが回避され、オリジンサーバーの負荷が軽減されます。
操作手順
ESA コンソールで、[サイト管理] を選択します。サイト 列で、対象のサイトをクリックします。
左側のナビゲーションウィンドウで、 を選択します。
ルールを追加 をクリックし、ルール名 を入力します。
[リクエストが以下のルールと一致する場合...] エリアで、リクエスト属性を一致するように設定します。ルールの構成について詳しくは、「ルール式の構成」をご参照ください。
「エッジキャッシュの有効期間」エリアで、「設定」をクリックします。
ステータスコードキャッシュの有効期間 の [追加] をクリックします。次のパラメーターを設定し、OK をクリックします:
ステータスコード: キャッシュする HTTP ステータスコード。404、502、503 などの 4xx(クライアントエラー)および 5xx(サーバー側エラー)のステータスコードをサポートします。
有効期間: POP が状態コードをキャッシュする期間です。値は 1 秒から 31,536,000 秒 (1 年) の範囲で指定できます。TTL の有効期限が切れると、POP はオリジンサーバーから再度状態コードをフェッチします。

設定例
シナリオ 1:静的リソースの 404 エラーのキャッシュ
ビジネスニーズ:ウェブサイトの画像フォルダ内の画像が削除されても、フロントエンドページが古いパスを参照し続けている場合があります。
設定:
一致条件:URL パスに
/imagesが含まれるステータスコード:404
キャッシュ TTL:600 秒 (10 分)

結果:存在しない画像への最初のリクエストが行われると、POP はオリジンから 404 応答をフェッチし、10 分間キャッシュします。次の 10 分間、同じ画像への後続のリクエストは、オリジンフェッチなしで POP から直接 404 応答を受け取ります。
シナリオ 2:オリジンサーバー障害の短期キャッシュ
ビジネスニーズ:オリジンサーバーが短時間利用できなくなり、5xx エラーを返すことがあります。サービスを迅速に回復させたいと考えています。
設定:
一致条件: すべてのリクエスト
ステータスコード:5xx
キャッシュ TTL:60 秒 (1 分)

結果:オリジンサーバーに障害が発生すると、POP は 5xx ステータスコードを 1 分間キャッシュします。これにより、多くのオリジンリクエストがオリジンサーバーの負荷を増加させるのを防ぎます。1 分後、POP は再度オリジンからフェッチして、サーバーが回復したかどうかを確認します。
設定の確認
設定が完了したら、次の方法を使用して設定が有効になっていることを確認します。
方法 1:curl コマンドの使用
ローカルキャッシュをクリアし、最初のリクエストを送信します:
curl -I https://example.com/non-existent-pageレスポンスヘッダーには
x-site-cache-status: MISSが含まれているはずです。これは最初のオリジンフェッチを示します。すぐに同じ
URLを再度リクエストします:curl -I https://example.com/non-existent-pageレスポンスヘッダーにはキャッシュヒットを示す
x-site-cache-status: HITが含まれているはずです。キャッシュ期間を示すフィールドの値も自動的に増分します。
方法 2:ブラウザの開発者ツールの使用
Chrome 開発者ツールを開き (F12 キーを押す)、[ネットワーク] タブに切り替えて、[ログを保持] をオンにします。
存在しないリソース (例:
https://example.com/test404) にアクセスします。リクエスト詳細で
[レスポンスヘッダー]を表示します。最初のリクエストではx-site-cache-status: MISSが表示されます。後続のリクエストではx-site-cache-status: HITが表示され、キャッシュ期間を示すフィールドの値が自動的に増分します。
よくある質問
設定後もリクエストがオリジンサーバーに送信されるのはなぜですか?
キャッシュの有効期限切れ:設定した
TTL値が短すぎないか確認してください。Cache-Controlなどのレスポンスヘッダーを調べて、キャッシュの生存時間を確認できます。異なる URL パラメーター:デフォルトでは、異なる
URLパラメーターは異なるキャッシュキーとして扱われます。関連性のないパラメーターを無視するようにキャッシュキールールを設定してください。ルールが有効になっていない:パスパターンなどのルールの一致条件を確認し、対象のリクエストをカバーしていることを確認してください。
特定の URL のキャッシュステータスを確認するにはどうすればよいですか?
curl コマンドを使用して、詳細なレスポンスヘッダーを表示できます:
curl -v -I https://example.com/target-url主要なレスポンスヘッダー:
x-site-cache-status: HIT— キャッシュヒットx-site-cache-status: MISS— キャッシュミス、オリジンフェッチが実行されたCache-Control:max-age=120— キャッシュが 120 秒間アクティブであった
特定のステータスコードのキャッシュを手動でパージするにはどうすればよいですか?
リファレンス
ルール関連の機能は、実行優先度、ルールの動作、設定範囲が異なります。詳細については、「ESA ルールの有効化の仕組み」をご参照ください。