カスタムキャッシュキーを使用すると、URI、クエリパラメーター、HTTP ヘッダー、カスタム変数など、HTTP リクエストのさまざまな部分からキャッシュキーを生成できます。 同じファイルに対する類似のリクエストを単一のキャッシュキーにマッピングすることで、キャッシュヒット率を向上させ、オリジンフェッチを削減し、応答時間を短縮して帯域幅の消費量を削減できます。
注意事項
カスタムキャッシュキーとパラメータの無視
カスタムキャッシュキーの パラメーター操作 機能と パラメーターを無視 機能は、どちらもキャッシュキーを生成する際の URL クエリパラメーターの処理方法を制御します。 両方の機能が同時に設定されている場合、ルールレベルのカスタムキャッシュキー設定がグローバルな [パラメーターを無視] 設定を上書きするため、[パラメーターを無視] 機能は無効になります。
カスタムキャッシュキーでパラメーター操作を使用する場合、ルールの競合を防ぐために、パラメーター無視機能を無効にしてください。パラメーター操作には、パラメーター無視機能の機能 (削除 または 予約 操作による) が含まれており、より柔軟なパラメーター制御を提供します。
パラメータの無視機能を使用している場合は、次の表を参照して、カスタムキャッシュキーのパラメータアクションに切り替えるかどうかを決定してください。
シナリオ | パラメータの無視 | カスタムキャッシュキー |
キャッシュキー内のすべてのクエリパラメーターを無視する | [Ignore Parameters] を [Yes] に設定し、[Retain Specified Parameters] を空のままにします。 | クエリパラメーターの処理ルールを追加します。
|
キャッシュキーにクエリパラメーター | [Ignore Parameters] を [Yes] に設定し、[Retain Specified Parameters] を | クエリパラメーターの処理ルールを追加します。
|
キャッシュキーからクエリパラメーター | [Delete Specified Parameters] を | クエリパラメーターの処理ルールを追加します。
|
パラメータの無視や保持だけでなく、パラメータ値の変更やパラメータの追加が必要な場合は、パラメータの無視機能の代わりに、カスタムキャッシュキーのパラメータアクションを使用してください。
ルールエンジンの実行順序
この機能がルールエンジンからルール条件を参照する場合、実行順序はこの機能内で設定されたルールの優先順位ではなく、ルールエンジン内のルール条件の優先順位に基づきます。
キャッシュ更新
カスタムキャッシュキーを設定すると、DCDN PoP は処理されたキャッシュキーによってキャッシュファイルをインデックス化します。 URL によってキャッシュを更新する場合、DCDN PoP のキャッシュキーと一致する URL を送信してください。 そうしないと、更新操作でターゲットコンテンツを見つけることができません。
たとえば、/a/b/image.jpg を /c/image.jpg に置換する URI 置換ルールを設定した場合、DCDN PoP のファイルのキャッシュキーは http://aliyundoc.com/c/image.jpg になります。 このファイルのキャッシュを更新するには、元のクライアントリクエスト URL ではなく、http://aliyundoc.com/c/image.jpg (処理されたキャッシュキー) を送信する必要があります。
パラメータの削除や変更などのパラメータアクションを設定した場合、処理された URL を更新アドレスとして使用します。 将来のキャッシュ更新操作を簡素化するために、カスタムキャッシュキールールを設定した後の最終的なキャッシュキー形式を記録しておいてください。
オリジン URL リライト
カスタムキャッシュキー機能は、DCDN PoP でのキャッシュキーの生成方法にのみ影響します。 オリジンフェッチに使用される実際の URL は変更されません。 DCDN PoP がオリジンからフェッチする場合、元のクライアントリクエスト URL を使用します。 オリジンに送信されるリクエストのパラメータやパスをリライトするには、オリジン URL リライト機能を使用します。
たとえば、クライアントが http://example.com/image.jpg?key1=1&key2=2 をリクエストします。 key1 パラメータを削除するようにカスタムキャッシュキーを設定します。 キャッシュキーは http://example.com/image.jpg?key2=2 になります。 ただし、DCDN PoP がオリジンからフェッチするときは、元の URL である http://example.com/image.jpg?key1=1&key2=2 をリクエストします。
ユースケース
カスタムキャッシュキー機能は、オリジンフェッチに使用される URL を変更しません。 リクエストのキャッシュ識別子のみを変更します。 オリジンに送信されるリクエストは、元のクライアントリクエストと同じです。
キャッシュキーは、DCDN PoP にキャッシュされたファイルの一意の識別子です。 デフォルトでは、キャッシュキーはクエリパラメーターを含む完全なリクエスト URL です。
シナリオ1
同じファイルに対するクライアントリクエストに異なる URL パラメータが含まれている場合、DCDN PoP はそれらを異なるファイルへのリクエストとして扱います。 これにより、同じファイルのキャッシュコピーが複数生成され、オリジンフェッチが増加します。
カスタムキャッシュキールールを使用して、類似のリクエストのキャッシュキーを統一し、オリジンフェッチ率を低減できます。
シナリオ2
DCDN は、同じ URL のリクエストを同じファイルへのリクエストとして扱います。 ただし、リクエストの HTTP ヘッダーには、クライアントシステムを区別するための client フィールドが含まれており、その目的は異なるファイルを取得することです。
この場合、カスタム Cachekey を使用してクライアントフィールドの値を Cachekey に追加すると、2 つのリクエストが 2 つの異なる Cachekey として識別されます。
操作手順
- DCDNコンソールにログインします。
- 左側のナビゲーションペインで ドメイン名 をクリックします。
-
ドメイン名 ページで対象のドメイン名を見つけ、設定 をクリックします。
- ドメイン名の左側のナビゲーションウィンドウで、[キャッシング] をクリックします。
カスタムキャッシュキー タブで、キャッシュキーを設定します。
説明最終的なキャッシュキーは、URI、パラメータアクション、HTTP ヘッダー、カスタム変数の4つのコンポーネントを組み合わせたものです。

パラメーター
説明
[ルール条件]
ルール条件は、リクエスト内のパラメータを評価して、設定がリクエストに適用されるかどうかを決定します。
重要機能がルールエンジンで設定されたルール条件を参照する場合、実行順序は機能設定の順序ではなく、関連するルール条件の優先順位に従います。
[条件を使用しない]: 条件付きルールを無効にします。
条件付きルールは ルールエンジン で追加または編集できます。
[URI]
クライアントリクエストの URI が設定済みのソース URI と一致する場合、システムはキャッシュキーの URI 部分を生成する際に、ソース URI を設定済みのターゲット URI に置き換えます。
複数の URI 置換ルールを設定できます。ルールは上から下に順番に照合されます。一度 ソース URI が一致すると、システムは対応する ターゲット URI を使用して置換を行い、後続のルールの照合を停止します。
[ソース URI]: スラッシュ (/) で始まる URI であり、http:// プレフィックスやドメイン名は含みません。
PCRE正規表現をサポートしています。[ターゲット URI]: スラッシュ (/) で始まり、http:// プレフィックスまたはドメイン名を含まない URI です。
[パラメーター操作]
これらの操作は、元のリクエスト URL のクエリパラメーターに適用されます。パラメーターに対して 追加、削除、変更、または 予約 操作を実行できます。これらの操作の結果として得られるパラメーターが、キャッシュキーのクエリ文字列部分を構成します。複数の操作を設定でき、設定した順に上から下に実行されます。
[追加]: 新しいクエリパラメーターをキャッシュキーに追加します。たとえば、元の URL が
http://image.example.com/cat.jpgで、クエリパラメーターtype=jpgを追加すると、キャッシュキーはhttp://image.example.com/cat.jpg?type=jpgになります。[削除]:キャッシュキーを生成する際に、元のリクエスト URL から指定したクエリパラメーターを削除します。 例えば、元の URL が
http://image.example.com/cat.jpg?type=jpgで、typeパラメーターを削除した場合、キャッシュキーはhttp://image.example.com/cat.jpgになります。[変更]: キャッシュキーが生成されるときに、元のリクエスト URL の指定されたクエリパラメーターを変更します。 たとえば、元の URL が
http://image.example.com/cat.jpg?type=jpgで、パラメーターをtype=pngに変更した場合、キャッシュキーはhttp://image.example.com/cat.jpg?type=pngになります。[予約]: キャッシュキーの生成時に、元のリクエスト URL から指定されたクエリパラメーターのみを保持します。たとえば、元の URL が
http://image.example.com/cat.jpg?type=jpg&path=imageで、typeパラメーターを保持すると、キャッシュキーはhttp://image.example.com/cat.jpg?type=jpgになります。
[HTTP ヘッダー]
元のクライアントリクエストから指定された HTTP ヘッダーの値をキャッシュキーに追加します。 複数の HTTP ヘッダー名をスペースで区切って設定できます。 指定された各 HTTP ヘッダーの値は、順次キャッシュキーに追加されます。
例えば、元の URL が
http://image.example.com/cat.jpgで、クライアントリクエストに HTTP ヘッダーpath: imageが含まれており、HTTP ヘッダー 設定をpathヘッダーを含むように設定した場合、キャッシュキーはhttp://image.example.com/cat.jpgimageになります。[カスタム変数]
生成されたキャッシュキーにカスタム変数情報を追加して、キャッシュ設定の柔軟性を向上させます。 カスタム変数には、次のパラメータが含まれます。
変数名:変数のカスタム名。
変数ソース:変数のソースとして使用されるクライアントリクエスト内の特定のフィールド。
クエリ文字列パラメータ:リクエスト URL のクエリ文字列。
リクエストヘッダー:クライアントリクエストのリクエストヘッダー。
パス:リクエスト URL のリソースパス。
スキーム:リクエスト URL で使用されるプロトコル。 HTTP と HTTPS をサポートします。
ソースフィールド名:次の3つのシナリオに適用されます。
指定されたクエリ文字列パラメータの名前。
指定されたリクエストヘッダーの名前。
マッチングルール:フィールド値の特定の文字に一致させるために使用される正規表現。
変数式:最終的な変数値の生成に使用します。 固定文字列と、最初のキャプチャグループのコンテンツを参照するための
$1のような式をサポートします。
設定を完了するには、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 に変更します。 最終的なキャッシュキーは 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、ソースは リクエストヘッダー、ソースフィールド名は 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 番目の括弧のペアによってキャプチャされたコンテンツを表します。 たとえば、例1で入力が Accept-Language=en,ch で、マッチングパターンが ([%w]+),([%w]+) の場合、$1=en および $2=ch となります。
例2
変数名は expired、ソースは リクエスト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:
/abc/.*/abcに一致するすべてのリクエスト URI を/abcに書き換えます。
カスタム変数:
変数名は
testname、ソースはパス、マッチングパターンは/abc/xyz/(.*)、変数式は$1です。
URL
http://aliyundoc.com/abc/xyz/abc/image.jpgを含むクライアントリクエストの場合、キャッシュキーは URI 設定に基づいてhttp://aliyundoc.com/abc/image.jpgに正規化されます。 次に、カスタム変数設定に基づいてこの URL が/abc/xyz/(.*)に一致すると、$1に値abcが割り当てられてキャッシュキーに追加され、最終的なキャッシュキーはhttp://aliyundoc.com/abc/image.jpgabcとなります。 これにより、2 つのルールが連携し、より複雑なキャッシュロジックを実装できます。キャッシュキーのカスタム変数が一致しない場合、変数式
$1はキャッシュキーに連結されません。