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

CDN:リソースのためにキャッシュルールを作り

最終更新日:May 06, 2024

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

使用上の注意

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

    短いTTLは、頻繁なオリジンフェッチを引き起こし、オリジンサーバーの負荷を増加させる可能性があります。 TTLが長いと、POP上のリソースが期限切れになる可能性があります。

  • POP上にキャッシュされたリソースがあまり頻繁にアクセスされない場合、リソースは、リソースが期限切れになる前にPOP上で頻繁にアクセスされるリソースによって上書きされ得る。

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

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

    このように、更新後のファイルの各バージョンは一意の名前を持ちます。 たとえば、ファイルを更新する前にimg-v1.0.jp g、ファイルを更新した後にimg-v2.1.jp gという名前を付けることができます。

手順

  1. Alibaba Cloud CDNコンソール

  2. 左側のナビゲーションウィンドウで、ドメイン名.

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

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

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

  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-cachecache-control:no-store、またはcache-control:max-age=0ディレクティブが含まれている場合、静的ファイルはキャッシュされません。

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

    説明

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

    • 複数のキャッシュルールを作成する場合は、各キャッシュルールに一意の重みを指定して、キャッシュルールの優先順位を定義することを推奨します。 より高い重みは、より高い優先度を指定する。

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

  3. Alibaba Cloud CDNは、オリジンサーバーに設定された他のキャッシュルールに従います。 配信元サーバーからの応答のヘッダーは、キャッシュ制御 > 期限切れ > Last-Modified > ETagの優先順位の降順です。

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

    2. 応答は、Expires: Tue、11月25日2031 17:25:43GMTなどのExpiresヘッダーを搬送する。

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

      1. 応答がLast − Modifiedヘッダを搬送する場合、TTL = (Current time − 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にキャッシュされません。

HTTPキャッシュメカニズム

HTTPには、キャッシュ動作の制御に使用できる3種類のヘッダーがあります。

  1. キャッシュTTL

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

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

    ヘッダー

    プロトコルバージョン

    説明

    データ型

    Pragma

    HTTP/1.0

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

    プラグマ: キャッシュなし

    リクエストとレスポンス

    Expires

    HTTP/1.0

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

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

    有効期限: 水曜日、10月2022日07:28:00 GMT

    レスポンス

    Cache-Control

    HTTP/1.1

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

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

    • キャッシュ制御: no-Cache

    • キャッシュ制御: no-store

    • キャッシュ制御: max-age=0

    次のディレクティブは、ファイルが1時間キャッシュされることを指定します。Cache-Control:max-age=3600。

    リクエストとレスポンス

  2. リソースタグ

    クライアントが最初にサーバーにリソースを要求すると、サーバーは応答ヘッダーにタグを追加します。 次にクライアントがサーバからリソースを要求するとき、タグは要求されたリソースを識別するために使用される。 後続の要求のヘッダーはこのタグを保持します。 サーバーがこのタグをチェックし、要求されたリソースが更新されていないことを確認すると、HTTP 304ステータスコードがクライアントに返されます。 クライアントは、ローカルキャッシュからリソースを取得します。 サーバが、タグがサーバ上のリソースのタグとは異なることを検出した場合、サーバは、リソースが更新されたか、または期限切れになったことをクライアントに通知する。 この場合、クライアントはサーバーからリソースの最新バージョンを取得する必要があります。

    HTTPには、キャッシュのバージョンを制御するために使用できる次の種類のヘッダーがあります。

    ヘッダー

    プロトコルバージョン

    説明

    データ型

    Last-Modified

    HTTP/1.0

    Last-Modifiedは、リソースが最後に更新された時刻を指定します。

    最終変更: 10月21日水曜日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を使用して、要求されたリソースに2つのバリアントがあることをPOPなどの受信者に通知します。 バリアントの1つは圧縮され、もう1つは圧縮されません。 クライアントが同じリソースに対してAlibaba Cloud CDN にリクエストを送信する場合、古いバージョンのブラウザでは、非互換性を防ぐためにリソースを解凍する必要があります。 最新バージョンのブラウザでは、データ転送を減らすためにリソースを圧縮する必要があります。

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

    Vary: Accept-Encoding

    Vary: Accept-Encoding,User-Agent

    レスポンス

設定例

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

image.png

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

関連する API 操作

BatchSetCdnDomainConfig

FAQ