URI、リクエストパラメーター、HTTP リクエストヘッダー、カスタム変数など、HTTP リクエストのさまざまな部分に基づいてカスタムキャッシュキーを設定できます。この機能は、同じファイルに対する異なるリクエストを単一のキャッシュキーに変換することで、キャッシュヒット率を向上させ、オリジンフェッチを削減し、応答時間と帯域幅の消費を減少させます。
注意
カスタムキャッシュキー機能とパラメーター無視機能は互いに競合します。パラメーターを無視するように設定した場合、Alibaba Cloud CDN の POP (Point of Presence) はリクエスト URL 内の疑問符 (
?) に続くパラメーターを削除します。これにより、キャッシュキーで設定されたリクエストパラメーターが利用できなくなります。カスタムキャッシュキーを有効にする前に、パラメーターを無視する設定を行っていないことを確認してください。カスタムキャッシュキー機能は、オリジンフェッチ URL を変更しません。リクエストのキャッシュ識別子のみを変更します。オリジンフェッチリクエストのコンテンツは、クライアントリクエストと同じままです。
URL パージ機能では、カスタムキャッシュキーが設定された後にキャッシュされたコンテンツをパージすることはできません。
シナリオ
カスタムキャッシュキー機能は、オリジンフェッチ URL を変更しません。リクエストのキャッシュ識別子のみを変更します。オリジンフェッチリクエストのコンテンツは、クライアントリクエストと同じままです。
キャッシュキーは、CDN POP にキャッシュされたファイルの一意の ID です。キャッシュされた各ファイルには、対応するキャッシュキーがあります。デフォルトでは、ファイルのキャッシュキーは、パラメーターを含むリクエスト URL です。
シナリオ 1
リクエスト URL には複雑なパラメーターが含まれる場合があります。複数のリクエストが同じファイルに対するものであっても、URL パラメーターが異なると、POP はそれらを異なるファイルへのリクエストとして扱います。これにより、複数のキャッシュされたコピーが作成され、オリジンフェッチが増加します。
カスタムキャッシュキールールを作成して、これらのリクエストのキャッシュキーを統一できます。これにより、オリジンフェッチが削減されます。
シナリオ 2
リクエストの URL が同じ場合、CDN はそれらを同じファイルへのリクエストと見なします。ただし、HTTP ヘッダーにはクライアントシステムを区別するクライアントフィールドが含まれている場合があり、これはリクエストが実際には異なるファイルに対するものであることを意味します。
この場合、クライアントフィールドの値を含むカスタムキャッシュキーを作成できます。これにより、2 つのリクエストを 2 つの異なるキャッシュキーで識別できるようになります。
手順
Alibaba Cloud CDN コンソールにログインします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理するドメイン名を見つけ、操作 列の 管理 をクリックします。
ドメイン名の左側のナビゲーションツリーで、キャッシュ設定 をクリックします。
カスタムキャッシュキー タブで、設定 をクリックしてキャッシュキーを設定します。
パラメータータイプ
説明
ルール条件
ルール条件は、リクエスト内のパラメーターを識別して、設定がリクエストに適用されるかどうかを判断できます。
条件を使用しない
ルール条件を追加または編集する場合は、「ルールエンジン」をご参照ください。
URI
ソース URI: スラッシュ (/) で始まる URI です。`http://` プレフィックスやドメイン名は含まれません。PCRE (Perl 互換正規表現) がサポートされています。
ターゲット URI: スラッシュ (/) で始まる URI です。`http://` プレフィックスやドメイン名は含まれません。書き換えられた宛先 URI は、キャッシュキーの構築に使用されます。
リクエストパラメーター
操作のオブジェクトは、元のリクエスト URL のパラメーターです。パラメーターの追加、削除、変更、または保持ができます。結果はキャッシュキーに追加されます。
HTTP ヘッダー
操作のオブジェクトは、元のリクエストの HTTP ヘッダーです。複数の HTTP ヘッダーの値をキャッシュキーに追加できます。
カスタム変数
正規表現を使用して、元のリクエストのリクエストパラメーター、HTTP ヘッダー、Cookie、または URI から任意のフィールドを抽出し、キャッシュキーに追加します。

OK をクリックします。
設定例
URI
http://aliyundoc.com/a/b/image.jpg と http://aliyundoc.com/a/b/c/image.jpg へのリクエストは、同じファイルへのリクエストとして扱われます。ファイルのキャッシュキーは http://aliyundoc.com/c/image.jpg です。
リクエストパラメーター
http://aliyundoc.com/a/b/image.jpg?delete_par=1&modify_par=1 へのリクエストの場合、ルールは add_par=1 を追加し、delete_par を削除し、modify_par の値を 2 に変更します。最終的なキャッシュキーは、URL http://aliyundoc.com/a/b/image.jpg?modify_par=2&add_par=1 に基づきます。
同じ変数に対して複数の操作が実行される場合、優先順位は次のとおりです: 追加 > 削除 > 保持 > 変更。

HTTP ヘッダー
User-Agent および Accept-Language HTTP ヘッダーの値がキャッシュキーに追加されます。たとえば、http://aliyundoc.com/a/b/image.jpg へのリクエストに User-Agent=Mozilla/5.0 (Linux; X11) と Accept-Language=en が含まれている場合、このリクエストのキャッシュキーは http://aliyundoc.com/a/b/image.jpgMozilla/5.0(Linux;X11)en となります。
カスタム変数
例 1
変数名を language、ソースを Request Header、ソースフィールドを Accept-Language、一致ルールを ([%w]+),([%w]+)、変数式を $1aa に設定します。
クライアントが HTTP ヘッダー Accept-Language=en,ch を使用して http://aliyundoc.com/a/b/image.jpg をリクエストします。一致ルールは en を $1 としてキャプチャします。変数式はこのキャプチャグループを使用し、aa を追加して、値 enaa を生成します。エイリアス language で識別されるこの値が URL に追加され、最終的なキャッシュキー http://aliyundoc.com/a/b/image.jpgenaa が形成されます。
変数式では、$n は一致ルールの n 番目のグループによって一致したコンテンツを指します。たとえば、文字列が Accept-Language=en,ch で、一致ルールが ([%w]+),([%w]+) の場合、$1=en および $2=ch となります。
例 2
変数名を expired、ソースを Request Cookie、ソースフィールドを a、一致ルールを [%w]+:(.*)、変数式を $1 に設定します。
クライアントが Cookie Cookie a=expired_time:12635187 を使用して http://aliyundoc.com/a/b/image.jpg をリクエストします。一致ルールは値 12635187 を抽出し、それを変数式 $1 に割り当てます。この変数式にはエイリアス expired があります。この値は URL に追加され、最終的なキャッシュキー http://aliyundoc.com/a/b/image.jpg12635187 が作成されます。
例 3
URI ルールとカスタム変数の両方を設定します。
URI:
URI が /abc/.*/abc に一致するすべてのリクエストを /abc にマージします。
カスタム変数:
変数名を testname、ソースを Path、一致ルールを /abc/xyz/(.*)、変数式を $1 に設定します。
クライアントが URL http://aliyundoc.com/abc/xyz/abc/image.jpg をリクエストします。URI 構成に基づいて URL がマージされ、結果のキャッシュキーは http://aliyundoc.com/abc/image.jpg となります。次に、カスタム変数構成に基づいて、元の URL がパターン /abc/xyz/(.*) に一致します。この場合、変数 $1 には値 abc が割り当てられ、キャッシュキーに追加されます。最終的なキャッシュキーは http://aliyundoc.com/abc/image.jpgabc です。これら 2 つのルールの組み合わせにより、より複雑なキャッシュロジックが可能になります。
カスタム変数の一致ルールが満たされない場合、変数式 $1 はキャッシュキーに追加されません。
例 4
ルール条件とカスタム変数を同時に設定して、モバイルクライアントと PC クライアントからのリクエストに対して異なるキャッシュキーを生成できます。
Mobile ルール条件:
User-Agent に *Mobile*,*Android*,*iPhone*,*ipad* のいずれかが含まれる

PC ルール条件:
User-Agent に *Mobile*,*Android*,*iPhone*,*ipad* のいずれも含まれない

Mobile カスタムキャッシュキー:
ルール条件 を Mobile に設定します。次に、カスタム変数 で、変数名 を Mobile、ソース を Path、マッチングルール を /、変数式 を +mobile に設定します。

PC カスタムキャッシュキー:
ルール条件 を PC に設定します。カスタム変数 で、変数名 を PC、ソース を Path、マッチングルール を /、変数式 を +pc に設定します。

クライアントが URL http://aliyundoc.com/image.jpg をリクエストします。User-Agent の値に基づいて、リクエストは Mobile または PC のカスタムキャッシュキールールに一致します。Mobile クライアントの最終的なキャッシュキーは http://aliyundoc.com/image.jpg+mobile です。PC クライアントの最終的なキャッシュキーは http://aliyundoc.com/image.jpg+pc です。