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

CDN:リソースのキャッシュルールを作成する

最終更新日:May 24, 2025

Time-to-live(TTL)は、CDN アクセスポイント(POP)にリソースがキャッシュされる時間です。キャッシュされたリソースの TTL が終了すると、POP 上のリソースの有効期限が切れます。有効期限が切れたリソースにアクセスしようとするリクエストは、オリジンサーバーにリダイレクトされます。取得されたリソースはクライアントに返され、POP にキャッシュされます。ファイルディレクトリまたはファイル名拡張子に基づいて、リソースのキャッシュルールを作成できます。

使用上の注意

  • ドメイン名を追加した後、TTL 値を変更できます。オリジントラフィックの量と発生する料金は、指定した TTL によって異なります。リソース TTL は、オリジンフェッチ頻度に影響します。ビジネス要件に基づいて TTL を指定してください。

    TTL が短いと、オリジンフェッチが頻繁に発生し、オリジンサーバーの負荷が増加する可能性があります。TTL が長すぎると、POP 上のリソースが古くなる可能性があります。

  • POP にキャッシュされているリソースにアクセスされる頻度が低い場合、リソースの有効期限が切れる前に、POP 上のアクセス頻度の高いリソースによって上書きされる可能性があります。

  • POP がオリジンサーバーからファイルを取得する場合、POP はキャッシュルールの優先順位に基づいてファイルを処理します。詳細については、「デフォルトのキャッシュルールとキャッシュルールの優先順位」をご参照ください。

  • オリジンサーバー上のファイルを更新する場合は、更新後にファイルバージョンを区別するために、ファイル名にバージョン番号を追加することをお勧めします。

    たとえば、ファイルを更新する前はimg-v1.0.jpg、更新後はimg-v2.1.jpgという名前を付けることができます。

手順

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

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

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

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

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

  6. キャッシュ有効期限 ダイアログボックスで、パラメーターを構成します。次の表にパラメーターを示します。

    缓存过期时间

    パラメーター

    説明

    タイプ

    ディレクトリ または ファイル拡張子 を選択します。

    • ディレクトリ: 同じディレクトリにあるリソースのキャッシュルールを作成します。

    • ファイル拡張子: 同じファイル名拡張子を持つリソースのキャッシュルールを作成します。

    アドレス

    キャッシュルールを追加するディレクトリまたはファイル名拡張子を指定します。

    • ディレクトリ を選択した場合は、次のルールに注意してください。

      • 一度に 1 つのディレクトリしか入力できません。スラッシュ(/)を使用してすべてのディレクトリを指定できます。

      • フルパスを入力できます。パスはスラッシュ(/)で始まる必要があります。例:/directory/aaa

    • [ファイル拡張子] を選択した場合は、次のルールに注意してください。

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

      • ファイル名拡張子は大文字と小文字が区別されます。

      • すべてのファイルタイプを指定するために、アスタリスク (*) をワイルドカードとして使用することはできません。

    有効期限

    TTL を指定します。最大 TTL は 3 年です。次のルールに注意してください。

    • 画像やアプリケーションパッケージなど、更新頻度の低い静的ファイルの場合は、1 か月以上の TTL を指定します。

    • JavaScript ファイルや CSS ファイルなど、更新頻度の高い静的ファイルの場合は、ビジネス要件に基づいて TTL を指定します。

    • PHP、JSP、ASP ファイルなどの動的ファイルのキャッシュを無効にするには、TTL を 0 秒に設定します。

    重み

    キャッシュルールの重みを指定します。重みは、キャッシュルールの優先順位を指定します。有効な値:1 ~ 99。値が大きいほど、優先順位が高くなります。

    説明
    • 複数のキャッシュルールを作成する場合は、キャッシュルールの優先順位を定義するために、各キャッシュルールに一意の重みを指定することをお勧めします。

    • 同じ重みを持つキャッシュルールは、ルールタイプに関係なく、作成時刻に基づいて優先順位が付けられます。作成時刻が最も早いルールが優先されます。

    • キャッシュされたリソースに複数のキャッシュルールを構成した場合、最初に一致したルールのみが有効になります。

    ルール条件

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

    • 条件を使用しない

    • ルールエンジンで構成済みのルール条件を選択します。詳細については、「ルールエンジン」をご参照ください。

  7. OK をクリックします。

    キャッシュ有効期限 タブで、変更 または 削除 をクリックして、キャッシュルールを変更または削除できます。

デフォルトのキャッシュルールとキャッシュルールの優先順位

POP がオリジンサーバーからファイルを取得した後、POP は次のキャッシュルールの優先順位に基づいてファイルを処理します。数が小さいほど、優先順位が高くなります。缓存优先级

  1. レスポンスに pragma:no-cachecache-control:no-cacheno-store、または max-age=0 ディレクティブが含まれている場合、ファイルはオリジンのポリシーに従ってキャッシュされません。

  2. CDN は、キャッシュされたリソースの TTL、またはコンソールで構成された HTTP ステータスコードの TTL に従います。

    説明

    リクエストが複数のキャッシュルールに一致する場合、重み > 作成時刻の優先順位に基づいて、1 つのルールのみが有効になります。

    • 複数のキャッシュルールを作成する場合は、キャッシュルールの優先順位を定義するために、各キャッシュルールに一意の重みを指定することをお勧めします。重みが大きいほど、優先順位が高くなります。

    • 同じ重みを持つキャッシュルールは、ルールタイプに関係なく、作成時刻に基づいて優先順位が付けられます。作成時刻が最も早いルールが優先されます。

  3. CDN は、オリジンサーバーに設定されている他のキャッシュルールに従います。オリジンサーバーからのレスポンスのヘッダーは、Cache-Control > Expires > Last-Modified > ETag の優先順位で適用されます。

    1. レスポンスに Cache-Control ヘッダーが含まれており、ディレクティブが max-age または s-maxage で、0 より大きい値に設定されている場合(例:Cache-Control:max-age=3600)。max-age ディレクティブと s-maxage ディレクティブの両方が存在する場合、s-maxage ディレクティブの値が優先されます。

    2. レスポンスに Expires ヘッダーが含まれている場合(例:Expires:Tue, 25 Nov 2031 17:25:43 GMT)。

    3. レスポンスに ETag ヘッダーまたは Last-modified ヘッダーが含まれている場合、TTL は次のルールに基づいて計算されます。

      1. レスポンスに Last-Modified ヘッダーが含まれている場合、TTL = (現在時刻 - Last-Modified) × 0.1。結果が 10 秒から 3,600 秒の間であれば、その結果が適用されます。結果が 10 秒未満の場合は、TTL は 10 秒です。結果が 3,600 秒を超える場合は、TTL は 3,600 秒です。

      2. レスポンスに ETag ヘッダーのみが含まれている場合、TTL は 10 秒です。

  4. レスポンスに ETagLast-ModifiedCache-Control、または Expires ヘッダーが含まれていない場合、ファイルは POP にキャッシュされません。

キャッシュ応答情報

  • Date:

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

    • CDN POP がオリジンフェッチリクエストの If-Modified-Since ヘッダーまたは If-None-Match ヘッダーを使用してオリジンサーバーでリソースを再検証し、オリジンサーバーが 304 ステータスコードを返す場合、日付情報は更新されます。

    • フォーマットは 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-SaveTime:

    • クライアントが直接アクセスする CDN L1 POP にリソースが最初にキャッシュされた時刻を示します。

    • フォーマットは GMT です。例:Sat, 19 Apr 2025 08:58:31 GMT

  • Ali-Swift-Global-Savetime:

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

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

HTTP キャッシュメカニズム

HTTP は、キャッシュの動作を制御するために使用できる 3 つのタイプのヘッダーを提供します。

  1. キャッシュ TTL

    クライアントがサーバーからリソースをリクエストすると、クライアントとサーバーは、POP にキャッシュされる返されたリソースの TTL を定義します。TTL が終了すると、リソースの有効期限が切れます。

    HTTP は、キャッシュ TTL を定義するために使用できる次のタイプのヘッダーを提供します。

    ヘッダー

    プロトコルバージョン

    説明

    タイプ

    Pragma

    HTTP/1.0

    Pragma ヘダーは、リソースがキャッシュされるかどうかを指定します。Pragma が no-cache に設定されている場合、リソースはキャッシュされません。Pragma は、HTTP/1.0 のみを使用するサーバーと互換性があります。

    Pragma:no-cache

    リクエストとレスポンス

    Expires

    HTTP/1.0

    Expires ヘッダーは、日付と時刻を指定します。キャッシュされたリソースは、指定された時刻に有効期限が切れます。

    Expires が 0 などの無効な値に設定されている場合、リソースの有効期限は切れています。

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

    レスポンス

    Cache-Control

    HTTP/1.1

    Cache-Control ヘッダーには、キャッシュポリシーを指定するさまざまなディレクティブが含まれています。ブラウザなどの主流のクライアントは、Cache-Control ヘッダーを使用してキャッシュの動作を制御します。

    次のディレクティブは、ファイルがキャッシュされないことを指定します。

    • 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 レスポンスヘッダーが導入されました。Vary ヘッダーには、コンテンツネゴシエーションを実装するために含める必要があるリクエストヘッダーがリストされています。

    コンテンツネゴシエーションでは、Vary ヘッダーを使用してバリアントを区別します。これにより、クライアントは目的のバリアントを取得できます。

    ヘッダー

    プロトコルバージョン

    説明

    タイプ

    Vary

    HTTP/1.1

    • サーバーは Vary: Accept-Encoding を使用して、POP などの受信者に、リクエストされたリソースに 2 つのバリアントがあることを通知します。一方のバリアントは圧縮されており、もう一方のバリアントは圧縮されていません。クライアントが CDN に同じリソースのリクエストを送信すると、古いバージョンのブラウザは、非互換性を防ぐためにリソースが圧縮解除されている必要があります。最新バージョンのブラウザは、データ転送を削減するためにリソースが圧縮されている必要があります。

    • サーバーは Vary: User-Agent を使用して、リクエストを開始したブラウザを識別し、POP などの受信者にブラウザタイプを通知します。POP は、ブラウザタイプに基づいてバリアントをキャッシュします。

    Vary: Accept-Encoding

    Vary: Accept-Encoding,User-Agent

    レスポンス

構成例

例 1: POP が TXT ファイルを 7 日間キャッシュするようにするには、CDN コンソールで TXT ファイルのキャッシュルールを作成し、TTL を 7 日間に設定します。

image.png

例 2: 高速化ドメイン名 demo.aliyun.com に対して、次のキャッシュルールが設定されています。POP がリソース http://demo.aliyun.com/image/example.png を取得すると、2 つのルールが一致となります。また、ルールの重みは同じです。この場合、ルールは作成時間で優先順位が付けられます。作成時間が最も早いルールが最も優先度が高くなります。したがって、/image ディレクトリに対して設定されているルールが有効になります。image.png

関連 API 操作

BatchSetCdnDomainConfig

よくある質問