HTTP リクエストの URI、リクエストパラメーター、HTTP リクエストヘッダー、またはカスタム変数など、異なる構成要素に基づいてキャッシュキーを生成するルールを作成することで、カスタムキャッシュキーを設定できます。この機能により、同一ファイルに対する複数のリクエストが単一のキャッシュキーに統合されるため、同一リクエストが異なるファイルとしてキャッシュされることを防ぎます。その結果、キャッシュヒット率が向上し、オリジンフェッチ回数が削減され、応答時間および帯域幅消費量も低減されます。
適用範囲
カスタムキャッシュキー機能は、リクエストのキャッシュ識別子(キャッシュキー)のみを変更し、オリジンフェッチ URL は変更しません。オリジンフェッチリクエストの内容は、クライアントリクエストと同一です。
キャッシュキーは、DCDN のポイント・オブ・プレゼンス(POP)にキャッシュされたファイルを一意に識別する ID です。デフォルトでは、キャッシュキーはクライアントのリクエスト URL(クエリパラメーターを含む)となります。
ユースケース 1
クライアントが複雑なクエリパラメーターを含むリクエストを送信します。複数のリクエストが同一ファイルを対象としていても、パラメーター値が異なる場合、DCDN の POP はそれらを異なるファイルへのリクエストとみなします。その結果、DCDN は同一ファイルの複数のコピーをキャッシュし、オリジンフェッチ回数が増加します。
類似したリクエストに対してキャッシュキーを統一するため、カスタムキャッシュキーのルールを適用します。これにより、オリジンフェッチ回数を削減できます。
ユースケース 2
クライアントが同一の URL を送信します。DCDN はこれを同一ファイルへのリクエストとみなします。ただし、HTTP ヘッダーにはクライアントシステムを区別するためのフィールドが含まれている場合があります。このような場合、DCDN がこれらのリクエストを個別のファイルとして扱うようにしたいと考えます。
クライアントヘッダーの値をキャッシュキーに追加します。これにより、DCDN は 2 つのリクエストを異なるキャッシュキーを持つものとして処理します。
操作手順
-
DCDN コンソール にログインします。
-
左側ナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理対象のドメイン名を検索し、設定 をクリックします。
-
ドメイン名の左側ナビゲーションツリーで、キャッシング をクリックします。
カスタムキャッシュキー タブで、カスタムキャッシュキーを構成します。
説明URI、クエリパラメーター、HTTP ヘッダーを変更できます。また、リクエストから特定のフィールドを抽出するカスタム変数を定義することも可能です。最終的なキャッシュキーは、以下の 4 つの要素から構成されます:URI、パラメーター操作、HTTP ヘッダー、カスタム変数。

パラメーター種別
操作の説明
ルール条件
ルール条件は、ユーザーのリクエストに含まれるさまざまなパラメーターを識別し、構成が該当リクエストに適用されるかどうかを判断します。
使用しない:ルール条件を使用しません。
ルール条件を追加または編集する場合は、ルールエンジンで管理してください。
URI
クライアントのリクエスト URI が設定済みの ソース URI と一致する場合、DCDN はオリジン URI を設定済みの ターゲット URI に置き換え、キャッシュキーを生成します。
複数の URI 置換ルールを設定できます。DCDN は上から順にルールを適用します。ある ソース URI に一致すると、対応する ターゲット URI を使用し、以降のルールのチェックを停止します。
ソース URI: スラッシュ (/) で始まる URI です。
http://プレフィックスやドメイン名を含めてはいけません。PCRE 正規表現をサポートします。ターゲット URI:先頭にスラッシュ (/) が付く URI。`http://` プレフィックスやドメイン名を含めないでください。
パラメーター操作
これらの操作は、クライアントの元のリクエスト URL に含まれるクエリパラメーターに適用されます。「追加」「削除」「変更」「予約」のいずれかを選択できます。これらの操作の結果は、キャッシュキーに追加されます。複数の操作を設定でき、DCDN は上から順に適用します。
追加:キャッシュキーに新しいクエリパラメーターを追加します。たとえば、元の 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に変更した場合、変更後のパラメーターに基づいてキャッシュキーが生成されます。予約:キャッシュキーを生成する際に、元の URL から指定されたクエリパラメーターのみを保持します。たとえば、元の URL が
http://image.example.com/cat.jpg?type=jpg&path=imageであり、typeパラメーターのみを保持する場合、キャッシュキーはhttp://image.example.com/cat.jpg?type=jpgになります。
HTTP ヘッダー
クライアントの元のリクエストに含まれる指定 HTTP ヘッダーの値を、キャッシュキーに追加します。複数の HTTP ヘッダー名を半角スペースで区切って指定できます。DCDN は、指定順にその値をキャッシュキーに追加します。
たとえば、元の URL が
http://image.example.com/cat.jpgであり、クライアントが HTTP ヘッダーpath:imageを送信し、HTTP ヘッダー 構成でpathを設定した場合、キャッシュキーはhttp://image.example.com/cat.jpgimageになります。カスタム変数
正規表現を用いて、クライアントの元のリクエストに含まれるリクエストパラメーター、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 に変更します。最終的なキャッシュキーは 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://aliyundoc.com/a/b/image.jpg に HTTP ヘッダー Accept-Language=en,ch が含まれている場合、パターンは 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 です。
クライアントリクエスト http://aliyundoc.com/a/b/image.jpg に Cookie Cookie a=expired_time:12635187 が含まれている場合、パターンは 12635187 にマッチし、$1 に割り当てられます。この変数は expired というエイリアスで呼び出され、URL 末尾に追加されて最終的なキャッシュキー http://aliyundoc.com/a/b/image.jpg12635187 が生成されます。
例 3
URI ルールとカスタム変数の両方を構成します。
URI:
パターン
/abc/.*/abcに一致するすべての URI を/abcに置き換えます。
カスタム変数:
変数名は
testnameです。ソースはPathで、マッチングパターンは/abc/xyz/(.*)、変数式は$1です。
クライアントリクエスト URL
http://aliyundoc.com/abc/xyz/abc/image.jpgでは、URI ルールによりキャッシュキーがhttp://aliyundoc.com/abc/image.jpgに変更されます。その後、カスタム変数ルールが/abc/xyz/(.*)にマッチし、$1はabcとなります。DCDN はこれを変更後のキャッシュキーに追加し、最終的なキャッシュキーhttp://aliyundoc.com/abc/image.jpgabcを生成します。このように複数のルールを組み合わせることで、より高度なキャッシュロジックを実現できます。カスタム変数がマッチしなかった場合、DCDN は変数式
$1をキャッシュキーに追加しません。