URI、リクエストパラメーター、HTTPリクエストヘッダー、カスタム変数など、HTTPリクエストのさまざまな部分に基づいてキャッシュキーを生成するルールを作成できます。 この機能を使用して、同じリソースのURLを同じキャッシュキーに変換することもできます。 これにより、キャッシュヒット率が向上し、オリジンサーバーにリダイレクトされるリクエストの数、応答時間、および帯域幅の使用量が削減されます。
シナリオ
カスタムキャッシュキーは、オリジンURLを変更しません。 カスタムキャッシュキーは、リクエスト内のキャッシュ識別子のみを変更します。 配信元サーバーにリダイレクトされ、クライアントによって送信されるリクエストは、同じコンテンツを宛先とします。
キャッシュキーは、POPにキャッシュされているファイルの一意のIDです。 POPにキャッシュされる各ファイルにはキャッシュキーがあります。 既定では、ファイルのキャッシュキーは、ファイルを取得するために送信されるリクエストのURLです。 URLはパラメータを含む。
シナリオ1
要求内のURLは、複雑なパラメータを含むことができる。 要求が同じファイルを取得するために送信された場合でも、POPは、URLパラメーターの変動のために異なるファイルを取得するために送信された要求を考慮し、すべての要求のファイルをキャッシュします。 その結果、多数のリクエストがオリジンサーバーにリダイレクトされます。
リクエストの種類にカスタムキャッシュキーを作成して、オリジンサーバーにリダイレクトされるリクエストの数を減らすことができます。
シナリオ2
リクエストは同じURLを持ちます。 この場合、Alibaba Cloud CDNは、リクエストが同じファイルを取得するために送信されたと見なします。 ただし、クライアントOSは、リクエストのHTTPヘッダーのクライアントフィールドで指定されます。 要求は、異なるファイルを取り出すために送信される。
この問題を解決するには、2つのキャッシュキーを作成し、クライアントフィールドの値をキャッシュキーに含めてから、キャッシュキーを使用してリクエストを区別します。
手順
Alibaba Cloud CDNコンソール
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
[ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。
ドメイン名の左側のナビゲーションツリーで、キャッシュ設定 をクリックします。
カスタムキャッシュキー タブで、設定 をクリックします。
説明キャッシュキーのURI、リクエストパラメーター、HTTPヘッダー、およびカスタム変数を変更できます。 最終的なキャッシュキーは、URI、リクエストパラメーター、HTTPヘッダー、およびカスタム変数で構成されます。
パラメーター
説明
URI
ソース URI。スラッシュ (/) で始まります。 ソースURIには、http:// またはドメイン名は含まれません。 Perl互換正規表現 (PCRE) がサポートされています。
ターゲット URI。スラッシュ (/) で始まります。 最終的なURIには、http:// またはドメイン名は含まれません。 最終URIはキャッシュキーの一部です。
リクエストパラメーター
パラメータアクションはリクエストURLに含まれています。 追加、削除、変更、および予約アクションを指定できます。 指定されたアクションが実行されると、結果はキャッシュキーの一部になります。
HTTP ヘッダー
HTTPヘッダーはユーザーリクエストに含まれています。 複数のHTTPヘッダー値をキャッシュキーに追加できます。
カスタム変数
正規表現を使用して、リクエストパラメーター、HTTPヘッダー、Cookie、URIからフィールドを抽出し、抽出したフィールドをキャッシュキーに追加できます。
OK をクリックします。
サンプル設定
URI
この例では、URI http://aliyundoc.com/a/b/image.jpg
およびhttp://aliyundoc.com/a/b/c/image.jpg
を宛先とする要求は、同じファイルを取得すると見なされます。 ファイルのキャッシュキーをhttp://aliyundoc.com/c/image.jpg
します。
リクエストパラメーター
URI http://aliyundoc.com/a/b/image.jpg?delete_par=1&modify_par=1
を宛先とするリクエストの場合、add_par=1
パラメーターがURIに追加され、delete_par
パラメーターがURIから削除され、modify_par
パラメーターの値が2
に変更されます。 この場合、最終URIはhttp://aliyundoc.com/a/b/image.jpg?modify_par=2&add_par=1
である。
同じ変数に適用されるアクションの優先度は、追加> 削除> 予約> 変更です。
HTTP ヘッダー
この例では、HTTPヘッダーのUser-Agent
フィールドとAccept-Language
フィールドの値がキャッシュキーに含まれています。 たとえば、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://aliyundoc.com/a/b/image.jpg
宛てのリクエストにHTTPヘッダーAccept-Language=en,ch
が含まれている場合、一致ルールは変数式の値en
を $1
に割り当てます。 文字列aa
は、変数式の末尾にも追加されます。 この場合、エイリアスlanguage
を持つ変数enaa
が生成されます。 変数をURLに追加すると、最終的なキャッシュキーがhttp://aliyundoc.com/a/b/image.jpgenaa
されます。
変数式の $n
は、No. n
ブラケット。 例1では、Accept-Language=en,ch
であり、一致ルールは ([% w]+),([% w]+)
です。 したがって、$1=en
および $2=ch
である。
例2
カスタム変数の名前が期限切れ
です。 変数のソースはRequest Cookie
、ソースフィールドはa
、一致ルールは [% w]+ :(.*)
、変数式は $1
です。
http://aliyundoc.com/a/b/image.jpg
宛てのリクエストにCookie a=expired_time:12635187
が含まれている場合、一致ルールは変数式の値12635187
を $1
に割り当てます。 変数のエイリアスが期限切れ
です。 最終的なキャッシュキーがhttp://aliyundoc.com/a/b/image.jpg12635187
される。
例3
URIルールとカスタム変数を同時に設定します。
URI:
すべてのリクエストURIの /abc/.*/abc
を /abc
に変換します。
カスタム変数:
カスタム変数の名前はtestname
です。 変数のソースはPath
、一致ルールは /abc/xyz/(.*)
、変数式は $1
です。
リクエストがhttp://aliyundoc.com/abc/xyz/abc/image.jpg
向けの場合、URLはURIルールに基づいてhttp://aliyundoc.com/abc/image.jpg
に変換されます。 URLは、カスタム変数ルールに基づいて /abc/xyz/(.*)
と一致します。 この場合、$1
に値abc
が割り当てられ、キャッシュキーに追加されます。 最終的なキャッシュキーがhttp://aliyundoc.com/abc/image.jpgabc
される。 複雑なキャッシュロジックをサポートするために、2つのルールが同時に適用されます。
キャッシュキーに一致するカスタム変数がない場合、変数式 $1
はキャッシュキーに追加されません。