すべてのプロダクト
Search
ドキュメントセンター

CDN:HTTP ステータスコードの有効期限の設定

最終更新日:Sep 05, 2026

CDN ノードがオリジンサーバーからリソースを取得すると、オリジンサーバーはレスポンスステータスコードを返します。 Alibaba Cloud CDN では、ステータスコードのキャッシュ期間を設定できます。 クライアントが同じリソースを再度リクエストすると、CDN はオリジンフェッチを行わずにステータスコードを直接返すため、オリジンサーバーの負荷が軽減されます。 設定されたキャッシュ期間が期限切れになると、オリジンフェッチが再度トリガーされます。

シナリオ

ステータスコード TTL は、主にオリジンサーバーが異常なステータスコードを返すシナリオで利用されます。これは、CDN ノードがこれらのステータスコードに対して実行するキャッシュアクションを指定するものです。

通常、CDN ノードがリクエストされたリソースをオリジンサーバーから正常にフェッチした場合、つまりオリジンサーバーが 2xx ステータスコードを返した場合、リソースは「CDNキャッシュの有効期限の設定」に基づいてキャッシュされます。オリジンサーバーがすべてのステータスコード (たとえば、2xx 以外のステータスコード) に迅速に応答できず、オリジンサーバーですべてのリクエストが処理されるのを避けたい場合は、ステータスコード TTL を設定できます。これにより、CDN ノードはステータスコードを直接返し、オリジンサーバーの負荷を軽減します。

典型的なシナリオ

オリジンサーバーからファイル A が削除されたにもかかわらず、クライアントからのリクエストが継続して発生するケースを考えます。CDN ノードはファイル A をキャッシュしていないため、ファイル A へのすべてのリクエストがオリジンサーバーに転送され、オリジンサーバーは 4xx ステータスコードを返します。これにより、オリジンサーバーの負荷が大幅に増加します。CDN ノードで 4xx ステータスコードのキャッシュが設定されている場合、CDN ノードはファイル A に対する最初のオリジンフェッチ後に 4xx ステータスコードをキャッシュします。設定されたキャッシュ期間内であれば、クライアントがファイル A を再度リクエストした際に、CDN ノードはオリジンフェッチを行うことなく、4xx ステータスコードを直接返します。

異常なステータスコードのキャッシュルール

  • 204、301、305、404、405、414、424、429、500、501、502、503、504 のステータスコードの場合、キャッシュルールは次のとおりです:image

    1. オリジンサーバーが set-cookie レスポンスヘッダーを返す場合、CDN はレスポンスをキャッシュしません。

    2. オリジンサーバーが Set-Cookie レスポンスヘッダーを返さない場合、レスポンスは CDN コンソールで設定されたステータスコード TTL に基づいてキャッシュされます。 複数のルールが設定されている場合、有効なルールがどのように決定されるかについては、複数のルールの優先度をご参照ください。

    3. オリジンサーバーが Set-Cookie レスポンスヘッダーを返さず、かつ CDN コンソールでステータスコード TTL が設定されていない場合、レスポンスは、オリジンサーバーによって設定された Pragma、Cache-Control、または Expires レスポンスヘッダーに基づいてキャッシュされます。

    4. オリジンサーバーが Set-Cookie、Pragma、Cache-Control、または Expires レスポンスヘッダーを返さず、かつ CDN コンソールでステータスコード TTL が設定されていない場合、レスポンスはデフォルトで 1 秒間キャッシュされます。

  • 302、307、403 のステータスコードの場合、キャッシュルールは次のとおりです:image

    1. オリジンサーバーが set-cookie レスポンスヘッダーを返す場合、CDN はレスポンスをキャッシュしません。

    2. オリジンサーバーが Set-Cookie レスポンスヘッダーを返さない場合、レスポンスは CDN コンソールで設定されているステータスコード TTL に基づいてキャッシュされます。複数のルールが設定されている場合、有効なルールの決定方法については、「複数のルールの優先順位」をご参照ください。

    3. オリジンサーバーが Set-Cookie レスポンスヘッダーを返さず、かつ CDN コンソールでステータスコード TTL が設定されていない場合、レスポンスは、オリジンサーバーによって設定された Pragma、Cache-Control、または Expires レスポンスヘッダーに基づいてキャッシュされます。

    4. オリジンサーバーが Set-Cookie、Pragma、Cache-Control、または Expires レスポンスヘッダーを返さず、かつ CDN コンソールでステータスコード TTL が設定されていない場合、レスポンスはキャッシュされません。

  • 304 ステータスコードの場合、CDN はレスポンスをキャッシュせず、キャッシュ期間もいかなる方法でも設定できません。

  • 400 ステータスコードなど、その他の異常なステータスコードの場合、キャッシュルールは次のとおりです:

    1. オリジンサーバーが set-cookie レスポンスヘッダーを返す場合、CDN はレスポンスをキャッシュしません。

    2. オリジンサーバーが Set-Cookie レスポンスヘッダーを返さない場合、レスポンスは CDN コンソールで設定されたステータスコード TTL に基づいてキャッシュされます。複数のルールが設定されている場合、有効なルールの決定方法については、「複数のルールの優先順位」をご参照ください。

    3. その他のシナリオでは、レスポンスはキャッシュされません。

  • Range オリジンフェッチを使用するリクエストの場合、CDN ノードがオリジンサーバーから 206 以外のステータスコードを受信すると、CDN ノードはキャッシュされたスライスを削除します (オリジンフェッチがタイムアウトしても、キャッシュされたファイルは削除されません)。

    レンジオリジンフェッチでは、オリジンサーバーは大きなファイルを複数の小さなスライスに分割し、CDN ノードに返します。 たとえば、ファイルが 10 個のスライスに分割され、CDN ノードが 5 個のスライスをキャッシュしているとします。 ノードが 6 番目のスライスをリクエストしたときに、オリジンサーバーは 5xx ステータスコードを返します。 この場合、以前にキャッシュされていた 5 つのスライスはすべて削除されます。

複数ルールの優先度

複数のステータスコードキャッシュルールを設定できます。リクエストが同時に複数のルールに一致する場合、1つのルールのみが有効になります。有効なルールは次のように決定されます:

  • 評価の順序

    まずルールタイプ (ファイル拡張子 > ディレクトリ) が評価され、次にルールの作成時間 (作成が早いルール > 作成が遅いルール) が評価されます。

  • 異なるタイプのルールの優先度:ファイル拡張子 > ディレクトリ

    たとえば、あるリクエストが同時に 2 つのルールに一致し (両方のルールで 404 ステータスコードが設定されている)、ルールタイプが [ファイル拡張子][ディレクトリ] であるとします。 この場合、404 ステータスコードの有効期限は、タイプが [ファイル拡張子] であるルールによって決定されます。 具体的な例については、「設定例」をご参照ください。

  • 同じタイプのルールの優先度:作成が早いルール > 作成が遅いルール (ルールリストの上から下の順)。

    たとえば、あるリクエストが 2 つのルールに同時に一致し、両方のルールに 404 ステータスコードが設定されていて、かつルールのタイプ (両方ともファイル拡張子タイプ、または両方ともディレクトリタイプ) が同じである場合です。この場合、404 ステータスコードの有効期限は、最初に作成されたルールによって決定されます。具体的な例については、設定例をご参照ください。

操作手順

  1. Alibaba Cloud CDN コンソールにログインします。

  2. 左側のナビゲーションペインで [ドメイン名 ] をクリックします。

  3. [ドメイン名] ページで、管理対象のドメイン名を見つけ、[アクション] 列の [管理] をクリックします。

    ドメイン名

  4. ドメイン名の左側のナビゲーションウィンドウで、[キャッシュ設定] をクリックします。

  5. HTTP ステータスコード有効期限 タブをクリックします。

  6. 追加 をクリックし、ステータスコード TTL を設定します。

    パラメーター

    説明

    [タイプ]

    ディレクトリファイル拡張子 の 2 種類がサポートされています。ビジネス要件に基づいて種類を選択してください。

    説明

    異なるタイプのルールの優先度:ファイル拡張子 > ディレクトリ。詳細については、「異常なステータスコードのキャッシュルール」をご参照ください。

    [アドレス]

    • タイプをディレクトリに設定した場合、以下の項目にご注意ください。

      • 一度に追加できるディレクトリは 1 つだけです。

      • ディレクトリの完全なパスを入力します。パスはスラッシュ (/) で始まる必要があります (例:/directory/aaa)。

    • タイプをファイル拡張子に設定した場合、次の項目にご注意ください。

      • 1 つ以上のファイル拡張子を入力します。複数のファイル拡張子はコンマ (,) で区切ります (例:jpg,txt)。

        説明

        異なるレコードで設定されたファイル拡張子が完全に同じで、大文字と小文字のみが異なる場合、後から作成されたレコードが先に作成されたレコードを上書きします。たとえば、jpg,txt ルールを作成した後に、別の JPG,TXT ルールを作成すると、先に作成されたルールが上書きされます。この場合、小文字のルールを設定する必要がある場合は、txt と jpg のルールを個別に作成できます。設定されたルールは、有効になるときに大文字と小文字が厳密に区別されます。

      • アスタリスク (*) ですべてのファイルタイプを指定することはできません。

    [設定]

    キャッシュするステータスコードと、そのキャッシュ期間を指定します。最大期間は3年です。単位:秒。設定ルールは以下のとおりです:

    • 複数のステータスコードはコンマ (,) で区切ります。

    • 2xx および 3xx ステータスコードの場合、個々のステータスコードの正確な設定のみが可能です。ワイルドカードによる一括設定はサポートされていません。たとえば、201=10 は設定できますが、2xx=12 は設定できません。

    • 4xx および 5xx ステータスコードの場合、個々のステータスコードの正確な設定とワイルドカードによる一括設定の両方が可能です。たとえば、401=104xx=12 の両方が設定可能です。

    [オリジンの TTL を優先]

    このスイッチを有効にすると、オリジンサーバーがキャッシュポリシーヘッダー (Cache-Control と Pragma を含む) を返した場合、オリジンサーバーが返したキャッシュポリシーが優先されます。

    [オリジンの No-Cache ヘッダーを無視]

    このスイッチをオンにすると、CDN ノードは、オリジンサーバーから返される次のキャッシュポリシーヘッダーを無視します。これらのヘッダーはすべて、コンテンツがキャッシュされないことを示します。

    • Cache-Control: no-store

    • Cache-Control: no-cache

    • Cache-Control: max-age=0

    • Pragma: no-cache

    [クライアントは CDN のキャッシュポリシーに従う]

    このスイッチをオンにすると、CDN ノードは、最終的に適用されるキャッシュポリシーをクライアントに返します。

    [コンテンツの強制再検証]

    このパラメーターは、キャッシュの有効期限が 0 に設定されている場合にのみ有効です。効果は以下のとおりです:

    • オフ (デフォルト): CDN のキャッシュ有効期限を 0 に設定すると、ファイルは CDN ノードにキャッシュされなくなり、リクエストごとにオリジンフェッチがトリガーされてコンテンツが取得されます。

    • 有効: CDN のキャッシュ有効期限を 0 に設定すると、ファイルは CDN ノードにキャッシュされますが、キャッシュされたコンテンツを再検証するために、リクエストごとにオリジンフェッチがトリガーされます。

  7. OK をクリックして設定を完了します。

    ステータスコード TTL を設定した後、有効期限 リストで現在の設定を変更または削除できます。

設定例

  • 例1:ディレクトリタイプのルール

    次の例のように、ディレクトリタイプのルールを作成します。

    /directory/aaa ディレクトリでは、すべての 4xx ステータスコードが 10 秒間キャッシュされ、201 ステータスコードが 15 秒間キャッシュされます。これらの期間内では、CDN ノードは対応するリクエストに直接応答します。この期間が終了すると、オリジンフェッチが発生します。

  • 例2:ファイル拡張子タイプのルール

    次の例のように、ファイル拡張子タイプのルールを作成します。

    拡張子が .jpg または .txt のファイルの場合、403 ステータスコードは 10 秒間キャッシュされ、404 ステータスコードは 15 秒間キャッシュされます。これらの期間内では、CDN ノードは対応するリクエストに直接応答します。この期間が終了すると、オリジンフェッチが発生します。

  • 例3:異なるタイプのルールの優先度

    次の例のように、ディレクトリタイプのルール (404 ステータスコードのキャッシュ期間を 10 秒に設定) とファイル拡張子タイプのルール (404 ステータスコードのキャッシュ期間を 20 秒に設定) が作成されているとします。

    ユーザーが http://example.com/directory/aaa/test.jpg をリクエストします。リソースは CDN ノードにキャッシュされていないため、CDN ノードはオリジンサーバーにリソースをリクエストし、オリジンサーバーは 404 ステータスコードを返します。このリクエストは、ディレクトリタイプのルールとファイル拡張子タイプのルールの両方に一致します。異なるタイプのルールは ファイル拡張子 > ディレクトリ の順序で有効になるため、ファイル拡張子タイプのルールが有効になり、404 ステータスコードの実際のキャッシュ期間は 20 秒になります。

  • 例4:同じタイプの複数ルールの優先度

    最初に /directory を対象とするディレクトリタイプのルール1 (404 ステータスコードのキャッシュ期間を 15 秒に設定) が作成され、次に /directory/aaa を対象とするディレクトリタイプのルール2 (404 ステータスコードのキャッシュ期間を 10 秒に設定) が作成されたとします。

    ユーザーが http://example.com/directory/aaa/test.jpg をリクエストします。リソースは CDN ノードにキャッシュされていないため、CDN ノードはオリジンサーバーにリソースをリクエストし、オリジンサーバーは 404 ステータスコードを返します。このリクエストは両方のディレクトリタイプのルールに一致します。同じタイプのルールは 作成が早いルール > 作成が遅いルール の順序で有効になるため、先に作成されたディレクトリタイプのルール1が有効になり、404 ステータスコードの実際のキャッシュ期間は 15 秒になります。

  • 例5:301 リダイレクトが永続的にキャッシュされる問題の解決

    CDN で高速化されたドメイン名が、継続的に別のドメイン名への 301 リダイレクトを返しているが、オリジンサーバーに直接 (CDN をバイパスして) アクセスすると、リダイレクトが返されなくなったとします。この場合、ステータスコード TTL にルールを追加し、ステータスコードを 301 に、キャッシュ期間を 0 に設定します (つまり、301=0)。これにより、CDN ノードは 301 レスポンスをキャッシュしなくなります。設定が完了したら、URL の更新タスクを送信して CDN キャッシュを更新し、キャッシュされた 301 レスポンスをクリアして、ルールを即時に有効にします。その後、ローカルブラウザーのキャッシュをクリアし、再度 URL にアクセスして結果を確認します。

関連 API

BatchSetCdnDomainConfig