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

CDN:キャッシュの有効期限の設定

最終更新日:Nov 20, 2025

キャッシュの生存時間 (TTL) は、オリジンサーバーからのリソースが CDN ノードにキャッシュされる期間を指定します。TTL の有効期限が切れると、CDN ノードはこれらのリソースを期限切れとしてマークします。クライアントが CDN ノードから期限切れのリソースをリクエストすると、CDN はオリジンフェッチを実行してリソースの最新バージョンを取得し、それを CDN ノードにキャッシュします。ビジネス要件に合わせて、ファイルディレクトリまたはファイル名拡張子に基づいて静的リソースのキャッシュ TTL を設定できます。

注意事項

  • ドメイン名を追加した後、キャッシュ時間を変更できます。キャッシュ期間は、CDN back-to-origin トラフィックとコストに影響します。キャッシュの有効期限は、オリジンフェッチの頻度に影響します。ビジネスニーズに基づいてリソースのキャッシュ期間を設定してください。

    キャッシュの有効期限が短すぎると、CDN はオリジンから頻繁にデータをフェッチするため、オリジンサーバーのトラフィックが増加します。キャッシュの有効期限が長すぎると、データ更新が遅延します。

  • アクセス頻度の低い (つまり、同じ CDN POP 上のリソースがクライアントから頻繁にリクエストされない) CDN POP にキャッシュされたリソースは、キャッシュの有効期限が切れる前に、CDN POP 上の他のより人気のあるリソースによって上書きされる可能性があります。

  • デフォルトでは、POP (Point of Presence) がオリジンサーバーからの応答で静的ファイルリソースを受信すると、Alibaba Cloud CDN および DCDN のデフォルトのキャッシュルールと優先度に従ってリソースをキャッシュします。

  • オリジンサーバー上のコンテンツを同じファイル名で更新しないでください。代わりに、同期にはバージョン番号を使用してください。

    更新前後のコンテンツを正確に区別するために、バージョン番号を使用してオリジンコンテンツを同期します。これは、コンテンツを更新するときに異なるファイル名を使用することを意味します。たとえば、img-v1.0.jpgimg-v2.1.jpg などの名前を使用できます。

手順

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

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

  3. ドメイン名 ページで、ターゲットドメイン名を見つけ、操作 列の 管理 をクリックします。

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

  5. キャッシュ有効期限 タブで、追加 をクリックします。

    image

    パラメーター

    説明

    タイプ

    ディレクトリ または ファイル拡張子 によってリソースの範囲を指定します。

    • ディレクトリ: 特定のパス内のすべてのリソースに同じキャッシュルールを設定します。

    • ファイル拡張子: 特定の種類のファイルに同じキャッシュルールを設定します。

    アドレス

    設定するリソースのフォルダまたはファイル名拡張子を指定します。

    • [タイプ] を [フォルダ] に設定した場合、次のルールに従います。

      • 一度に追加できるフォルダは 1 つだけです。すべてのフォルダを照合するには、スラッシュ (/) を使用します。

      • フォルダの完全なパスを入力します。パスはスラッシュ (/) で始まる必要があります (例: /directory/aaa)。

    • [ファイルサフィックス] をタイプとして選択した場合、次のルールが適用されます。

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

      • 入力では大文字と小文字が区別されます。

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

    有効期限

    リソースが CDN POP にキャッシュされる時間。最大時間は 3 年です。次のルールに基づいてこのパラメーターを設定します。

    • イメージやアプリケーションのダウンロードなど、頻繁に更新されない静的ファイルの場合は、有効期限を 1 か月以上に設定します。

    • JS ファイルや CSS ファイルなど、頻繁に更新される静的ファイルの場合は、必要に応じて有効期限を設定します。

    • PHP、JSP、ASP ファイルなどの動的ファイルの場合は、有効期限を 0 秒に設定します。これにより、キャッシュが無効になります。

    オリジンキャッシュポリシーを優先

    これが有効で、オリジンサーバーがキャッシュポリシーヘッダー (Cache-Control および Pragma を含む) で応答する場合、オリジンサーバーからのキャッシュポリシーが優先されます。

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

    これが有効な場合、CDN POP はオリジンサーバーの応答からの以下の no-cache ポリシーヘッダーを無視します。

    • Cache-Control: no-store

    • Cache-Control: no-cache

    • Cache-Control: max-age=0

    • Pragma: no-cache

    POP キャッシュポリシーに従う

    これが有効な場合、CDN POP は最終的に有効なキャッシュポリシーをクライアントへの応答で送信します。

    強制的な再検証

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

    • 無効 (デフォルト): CDN のキャッシュ有効期限が 0 に設定されている場合、ファイルは CDN POP にキャッシュされません。各リクエストは、コンテンツをフェッチするためにオリジンサーバーにリダイレクトされる必要があります。

    • 有効: CDN のキャッシュ有効期限が 0 に設定されている場合、ファイルは CDN POP にキャッシュできます。各リクエストは、キャッシュされたコンテンツを検証するためにオリジンサーバーにリダイレクトされる必要があります。

    重み

    重みはキャッシュルールの優先度を示します。値は 1 から 99 の範囲で指定できます。値が大きいほど優先度が高くなります。優先度の高いルールが優先されます。

    説明
    • 複数のキャッシュルールがある場合は、各ルールに異なる重みを設定して、実行の優先度を制御します。

    • 同じ重みを持つルールの場合、ルールタイプに関係なく、先に作成されたルールの方が優先度が高くなります。

    • 複数のキャッシュポリシーを設定した場合、1 つのポリシーが有効になると、他のポリシーは照合されません。

    ルール条件

    ルール条件は、リクエスト内のパラメーターを識別して、設定がリクエストに適用されるかどうかを判断できます。

    • 条件を使用しない

    • ルール条件を追加または編集する場合、詳細については、「ルールエンジン」をご参照ください。

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

Alibaba Cloud CDN のデフォルトのキャッシュルールと優先度

HTTP ステータスコードが 200, 203, 206, 300, 301, 308, or 410 のオリジン応答の場合、キャッシュの有効期限は次のルールによって決定されます。

CDN POP がオリジンサーバーからファイルリソースを受信すると、次の優先順位でキャッシュルールを適用します。数値が小さいほど、優先度が高くなります。缓存优先级

  1. オリジンサーバーが pragma:no-cachecache-control:no-cache (または no-store、または max-age=0) で応答した場合、CDN はリソースをキャッシュしません。

  2. CDN コンソールで設定されたキャッシュの有効期限または状態コードの有効期限。

    説明

    CDN リクエストが複数のルールに一致する場合、1 つのルールのみが適用されます。優先度は、まず重み、次に作成時間によって決定されます。

    • 複数のキャッシュルールがある場合は、各ルールに異なる重みを設定して、実行の優先度を制御します。重みが大きいほど優先度が高くなります。

    • 同じ重みを持つルールの場合、ルールタイプに関係なく、先に作成されたルールの方が優先度が高くなります。

  3. オリジンサーバーで設定されている他のキャッシュルール。優先度は高いものから順に、cache-control > expires > last-modified > ETag となります。

    1. オリジンサーバーからの応答の cache-control ヘッダーが 0 より大きい max-age または s-maxage 値を指定している場合、cache-control ヘッダーが生存時間の設定に使用されます。例: cache-control:max-age=3600。max-ages-maxage の両方が存在する場合、s-maxage が優先されます。

    2. オリジンの応答に cache-control ヘッダーは含まれていないが、Expires ヘッダーが含まれている場合、キャッシュの有効期限は Expires ヘッダーによって決定されます。例: expires:Tue, 25 Nov 2031 17:25:43 GMT。

    3. オリジンの応答に cache-control または Expires は含まれていないが、last-modified が含まれている場合、キャッシュ時間は数式 (現在の時刻 - last-modified) × 0.1 を使用して計算されます。結果が 10 秒から 3600 秒の間の場合、その結果が使用されます。結果が 10 秒未満の場合、キャッシュ時間は 10 秒です。結果が 3600 秒より大きい場合、キャッシュ時間は 3600 秒です。

    4. オリジンの応答に cache-controlExpires、または last-modified は含まれていないが、ETag が含まれている場合、リソースは 10 秒間キャッシュされます。

  4. オリジンサーバーから返されたデータにキャッシュ関連のレスポンスヘッダー (cache-controlexpireslast-modified、または ETag) が含まれていない場合、リソースはデフォルトではキャッシュされません。

キャッシュ応答情報の説明

  • Date:

    • オリジンサーバーが CDN POP への応答でリソースを送信した時刻を示します。

    • CDN POP が、オリジンリクエストに If-Modified-Since または If-None-Match ヘッダーを含めることでオリジンサーバーでリソースを再検証する場合、オリジンサーバーが 304 状態コードを返すと Date 情報が更新されます。

    • フォーマットはグリニッジ標準時 (GMT) です。例: Sat, 19 Apr 2025 08:58:31 GMT

  • X-Cache:

    リクエストされたリソースが CDN POP のキャッシュにヒットしたかどうかを示します。次の表に、考えられる値を示します。

    ステータス

    説明

    HIT

    リクエストされたリソースが CDN POP のキャッシュにヒットしました。

    MISS

    リクエストされたリソースが CDN POP のキャッシュにヒットしませんでした。リソースはオリジンサーバーによって提供されました。

  • X-Swift-Cachetime:

    • リソースの CDN POP 上での残りのキャッシュ時間 (秒単位) を示します。

    • X-Swift-Cachetime = Ali-Swift-Global-Savetime + CDN に設定されたキャッシュ有効期限 - X-Swift-SaveTime

    • X-Swift-Cachetime は、CDN に設定されたキャッシュ有効期限と常に等しいとは限りません。次の 3 つの状況が発生する可能性があります。

      • X-Swift-Cachetime = CDN に設定されたキャッシュ有効期限 (例: 3600 秒)。

      • X-Swift-CachetimeCDN に設定されたキャッシュ有効期限よりわずかに短い。たとえば、CDN のキャッシュ有効期限が 300 秒に設定されているのに、X-Swift-Cachetime が 295 秒である場合。これは、次の理由が考えられます。

        • レイヤー 1 POP がレイヤー 2 POP からデータをフェッチするときに高いレイテンシーが発生する。

        • レイヤー 1 とレイヤー 2 の POP の時計が同期していない。

      • X-Swift-Cachetime の値が負である。これは、CDN のキャッシュ有効期限が変更されたことが原因である可能性があります。クライアントがリクエストを送信すると、レイヤー 1 POP のキャッシュは期限切れになっていますが、レイヤー 2 POP のキャッシュは期限切れになっていません。たとえば、CDN のキャッシュ有効期限がもともと 3600 秒で、後で 300 秒に変更されたとします。クライアントが最初のリクエストから 600 秒後にリクエストを送信した場合、レスポンスヘッダーは X-Swift-Cachetime:-300 となります。この問題を解決するには、キャッシュをリフレッシュします。

  • X-Swift-SaveTime:

    • クライアントが直接アクセスした CDN POP にリソースが最初にキャッシュされた時刻を示します。これは通常、レイヤー 1 POP です。

    • フォーマットはグリニッジ標準時 (GMT) です。例: Sat, 19 Apr 2025 08:58:31 GMT

  • Ali-Swift-Global-Savetime:

    • リソースが CDN POP に最初にキャッシュされた時刻を示します。これは、サイトのキャッシュアーキテクチャに応じて、レイヤー 2 POP または別のキャッシュレイヤーの POP である可能性があります。

    • フォーマットは UNIX タイムスタンプです。例: 1745053111 (これは 2025-04-19 16:58:31 を表します)。

HTTP キャッシュ制御メカニズム

HTTP プロトコルは、3 種類のキャッシュ制御メカニズムを定義しています。

  1. 有効期限検証メカニズム

    クライアントがサーバーからリソースをリクエストすると、リソースの有効期限が設定されます。この時刻より前は、リソースのキャッシュコピーは有効と見なされます。この時刻を過ぎると、キャッシュコピーは無効と見なされます。

    キャッシュの有効期限を制御する一般的な HTTP ヘッダーは次のとおりです。

    ヘッダー名

    プロトコルバージョン

    機能

    値の例

    タイプ

    Pragma

    HTTP/1.0

    Pragma は、コンテンツをキャッシュすべきでないかどうかを示します。一般的な値は no-cache で、これはファイルがキャッシュされないことを意味します。これは、HTTP/1.0 のみをサポートするサーバーとの互換性のためにしばしば使用されます。

    Pragma:no-cache

    リクエスト/レスポンス

    Expires

    HTTP/1.0

    Expires レスポンスヘッダーには、キャッシュされたコンテンツが期限切れになる日時が含まれます。

    0 などの無効な日付が使用された場合、それはリソースがすでに期限切れであることを意味します。

    Expires: Wed, 21 Oct 2022 07:28:00 GMT

    レスポンス

    Cache-Control

    HTTP/1.1

    Cache-Control レスポンスヘッダーは、柔軟なキャッシュ制御を実現するためにさまざまな命令で設定できます。これは、ブラウザなどの最新のクライアントがキャッシュを制御するために使用する主要なヘッダーです。

    次の 3 つの例は、ファイルをキャッシュすべきでないことを示しています。

    • Cache-Control:no-cache

    • Cache-Control:no-store

    • Cache-Control:max-age=0

    キャッシュの有効期間が 1 時間であることを示す例: Cache-Control:max-age=3600

    リクエスト/レスポンス

  2. リソースタグ検証メカニズム

    クライアントが最初にサーバーからリソースをリクエストすると、サーバーはレスポンスヘッダーにリソースタグを含めます。このタグは、同じリソースに対する後続のリクエストの検証識別子として機能します。クライアントが再度リソースをリクエストすると、リクエストヘッダーにタグを含めます。サーバーがタグを検証し、リソースが更新されていないと判断した場合、HTTP 304 状態コードで応答します。これは、クライアントがローカルのキャッシュコピーを引き続き使用できることを示します。サーバーが不一致を検出した場合、それはリソースが変更されたことを示し、クライアントは再度リソースコンテンツを取得する必要があります。

    キャッシュバージョンを制御する一般的な HTTP ヘッダーは次のとおりです。

    ヘッダー名

    プロトコルバージョン

    機能

    値の例

    タイプ

    Last-Modified

    HTTP/1.0

    Last-Modified は、リソースの最終変更時刻を示します。

    Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT

    レスポンス

    ETag

    HTTP/1.1

    ETag は、リソースの特定のバージョンの一意の識別子を提供します。

    ETag を比較することで、リソースが変更されたかどうかを判断できます。変更されていない場合、オリジンサーバーは完全な応答を送信する必要はありません。

    ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

    レスポンス

  3. 複数コピーネゴシエーションメカニズム

    キャッシュソフトウェアは、ディスクにキャッシュされたオブジェクトをインデックス付けするためにキーワードを使用します。HTTP/1.0 では、リソース URL がキーワードとして使用されます。ただし、異なるリソースが同じ URL を共有する場合があります。それらを区別するために、クライアントは Accept-Language や Accept-Charset ヘッダーなどの詳細情報を提供する必要があります。このコンテンツネゴシエーションメカニズムをサポートするために、HTTP/1.1 では応答メッセージに Vary ヘッダーが導入されました。このヘッダーは、コンテンツネゴシエーションに使用されるリクエストメッセージのヘッダーを指定します。

    複数コピーネゴシエーションメカニズムは、通常、HTTP Vary ヘッダーを使用して異なるキャッシュコピーを区別します。これにより、同じリソースをリクエストする異なるクライアントが、そのリソースの異なるバージョンを受信できるようになります。

    ヘッダー名

    プロトコルバージョン

    説明

    値の例

    タイプ

    Vary

    HTTP/1.1

    一般的な例:

    • サーバーは Vary: Accept-Encoding を指定して、受信側 (たとえば CDN POP) に、このリソースに対して 2 つのバージョンのリソース (圧縮版と非圧縮版) をキャッシュする必要があることを通知します。クライアントが CDN から同じリソースをリクエストすると、古いブラウザは非圧縮リソースを取得し (互換性の問題を回避するため)、新しいブラウザは圧縮リソースを取得します (データ転送トラフィックを削減するため)。

    • サーバーは Vary: User-Agent を指定して、リクエストを送信しているブラウザのタイプを識別し、受信側 (たとえば CDN POP) に、ブラウザのタイプに基づいて対応するバージョンのリソースをキャッシュするように通知します。

    Vary: Accept-Encoding

    Vary: Accept-Encoding,User-Agent

    レスポンス

設定例

例 1: .txt ファイルを 7 日間キャッシュするには、CDN コンソールでファイル名拡張子「txt」のキャッシュルールを追加し、キャッシュの有効期限を「7 日」に設定します。

image.png

例 2: 高速化ドメイン名 demo.aliyun.com に次のキャッシュポリシーを設定したとします。CDN POP がオリジンからリソース http://demo.aliyun.com/image/example.png をフェッチすると、次の両方のルールが一致します。ルールは同じ重みを持つため、先に作成されたルールの方が優先度が高くなります。この場合、/image フォルダのルールが先に作成されたため、システムはフォルダタイプのルールを適用します。

image.png

関連 API

BatchSetCdnDomainConfig

よくある質問