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

CDN:カスタムキャッシュキーの作成

最終更新日:Mar 05, 2024

URI、リクエストパラメーター、HTTPリクエストヘッダー、カスタム変数など、HTTPリクエストのさまざまな部分に基づいてキャッシュキーを生成するルールを作成できます。 この機能を使用して、同じリソースのURLを同じキャッシュキーに変換することもできます。 これにより、キャッシュヒット率が向上し、オリジンサーバーにリダイレクトされるリクエストの数、応答時間、および帯域幅の使用量が削減されます。

シナリオ

重要

カスタムキャッシュキーは、オリジンURLを変更しません。 カスタムキャッシュキーは、リクエスト内のキャッシュ識別子のみを変更します。 配信元サーバーにリダイレクトされ、クライアントによって送信されるリクエストは、同じコンテンツを宛先とします。

キャッシュキーは、POPにキャッシュされているファイルの一意のIDです。 POPにキャッシュされる各ファイルにはキャッシュキーがあります。 既定では、ファイルのキャッシュキーは、ファイルを取得するために送信されるリクエストのURLです。 URLはパラメータを含む。

シナリオ1

要求内のURLは、複雑なパラメータを含むことができる。 要求が同じファイルを取得するために送信された場合でも、POPは、URLパラメーターの変動のために異なるファイルを取得するために送信された要求を考慮し、すべての要求のファイルをキャッシュします。 その結果、多数のリクエストがオリジンサーバーにリダイレクトされます。图一

リクエストの種類にカスタムキャッシュキーを作成して、オリジンサーバーにリダイレクトされるリクエストの数を減らすことができます。图二

シナリオ2

リクエストは同じURLを持ちます。 この場合、Alibaba Cloud CDNは、リクエストが同じファイルを取得するために送信されたと見なします。 ただし、クライアントOSは、リクエストのHTTPヘッダーのクライアントフィールドで指定されます。 要求は、異なるファイルを取り出すために送信される。场景一

この問題を解決するには、2つのキャッシュキーを作成し、クライアントフィールドの値をキャッシュキーに含めてから、キャッシュキーを使用してリクエストを区別します。场景二

手順

  1. Alibaba Cloud CDNコンソール

  2. 左側のナビゲーションウィンドウで、ドメイン名 をクリックします。

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

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

  5. カスタムキャッシュキー タブで、設定 をクリックします。

    説明

    キャッシュキーのURI、リクエストパラメーター、HTTPヘッダー、およびカスタム変数を変更できます。 最終的なキャッシュキーは、URI、リクエストパラメーター、HTTPヘッダー、およびカスタム変数で構成されます。

    パラメーター

    説明

    URI

    • ソース URI。スラッシュ (/) で始まります。 ソースURIには、http:// またはドメイン名は含まれません。 Perl互換正規表現 (PCRE) がサポートされています。

    • ターゲット URI。スラッシュ (/) で始まります。 最終的なURIには、http:// またはドメイン名は含まれません。 最終URIはキャッシュキーの一部です。

    リクエストパラメーター

    パラメータアクションはリクエストURLに含まれています。 追加、削除、変更、および予約アクションを指定できます。 指定されたアクションが実行されると、結果はキャッシュキーの一部になります。

    HTTP ヘッダー

    HTTPヘッダーはユーザーリクエストに含まれています。 複数のHTTPヘッダー値をキャッシュキーに追加できます。

    カスタム変数

    正規表現を使用して、リクエストパラメーター、HTTPヘッダー、Cookie、URIからフィールドを抽出し、抽出したフィールドをキャッシュキーに追加できます。

    自定义Cachekey

  6. 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

リクエストパラメーター

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になります。HTTP Header

カスタム変数

例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はキャッシュキーに追加されません。