Send Docs Feedback

Note: Most user interface tasks can be performed in Edge Classic or the New Edge experience. For an overview, getting started topics, and release notes specific to the New Edge experience, see the docs.

例: 汎用キャッシュの使用

ポリシーを使用してデータを汎用キャッシュに格納すると、データをより高速に取得できるようになります。以下のポリシーを使用することで、プロキシは実行時にキャッシュへのデータの格納やキャッシュからのデータの取得ができます。

このトピックでは、汎用のキャッシュ処理について説明します。レスポンスのキャッシュ処理については、Response Cache ポリシーに関する例を含むリファレンスである「Response Cache policy」を参照してください。

これらのポリシーは、プロキシで使用するデータの汎用キャッシュ処理用に設計されています。

このトピックのサンプルコードは、Github の Outbound OAuth サンプルに基づいています (「Samples reference」を参照)。このサンプルでは、キャッシュポリシーを使用して OAuth アクセストークンを格納して、複数の送信呼び出しで再利用できるようにします。

各ポリシータイプは XML スキーマ (.xsd) で定義されています。リファレンスについては、ポリシースキーマが GitHub に用意されています。

以下の例で、OAuth アクセストークンは PopulateCache ポリシーを使用してキャッシュに書き込まれています。書き込まれた OAuth トークンは、LookupCache ポリシーによって後続のリクエストで取得されます。このアクセストークンの期限が切れると、JavaScript を使用して新しいアクセストークンが取得され、今度はそれが PopulateCache ポリシーによってキャッシュされます。

キャッシュの設定

キャッシュへのデータの書き込みには、PopulateCache ポリシーを使用します。この例では、OAuth アクセストークンをキャッシュに書き込みます。ポリシーリファレンス情報については、「Populate Cache ポリシー」を参照してください。

Cache keys are limited to a size of 2 KB.

<PopulateCache name="token-cache">
    <!-- The cache to write to. -->
    <CacheResource>mycache</CacheResource>
    <!-- The source of the data, a variable containing the value. -->
    <Source>twitter-translate.apiAccessToken</Source>
    <!-- An enumeration representing a prefix for namespace scope. -->
    <Scope>Exclusive</Scope>
    <!-- A unique pointer (a flow variable value) to the data. Use this later to retrieve it. -->
    <CacheKey>
        <KeyFragment>apiAccessToken</KeyFragment>
        <KeyFragment ref="request.queryparam.client_id"></KeyFragment>
    </CacheKey>
    <!-- Entries placed into the cache with this policy will expire after 600 seconds. -->
    <ExpirySettings>
        <TimeoutInSec>600</TimeoutInSec>
    </ExpirySettings>
</PopulateCache>

変数はポリシーまたはコードによって設定されます。この例の Source 変数は JavaScript 呼び出し context.setVariable('twitter-translate.apiAccessToken', getAccessToken()); によって自動で設定されます。

キャッシュキーの詳細については、「Working with cache keys」を参照してください。

キャッシュされたデータのルックアップ

キャッシュされた値の取得には、LookupCache ポリシーを使用できます。以下の LookupCache ポリシーは、mycache の値を読み込み、その値を変数 twitter-translate.apiAccessToken に書き出します。ポリシーリファレンス情報については、「LookupCache ポリシー」を参照してください。

<LookupCache name="token-cache">
    <!-- The cache to read from. -->
    <CacheResource>mycache</CacheResource>
    <!-- Where to assign the retrieved value - here, a variable. -->
    <AssignTo>twitter-translate.apiAccessToken</AssignTo>
    <!-- An enumeration representing a prefix for namespace scope. -->
    <Scope>Exclusive</Scope>
    <!-- The unique pointer (a flow variable value) that was used to store the data in the cache. -->

    <CacheKey>
        <KeyFragment>apiAccessToken</KeyFragment>
        <KeyFragment ref="request.queryparam.client_id"></KeyFragment>
    </CacheKey>
</LookupCache>

キャッシュの無効化

キャッシュは、HTTP ヘッダーを指定することで明示的に無効にできます。指定された HTTP ヘッダーを含むリクエストが受信されると、キャッシュがフラッシュされます。ポリシーリファレンス情報については、「InvalidateCache ポリシー」を参照してください。

<InvalidateCache name="InvalidateMyCache">
    <!-- The cache to invalidate. -->
    <CacheResource>test-cache</CacheResource>
    <!-- An enumeration representing a prefix for namespace scope. -->
    <Scope>Exclusive</Scope>
    <!-- Fragments constructing the unique pointer used when 
        the data was put into the cache. -->
    <CacheKey>
        <KeyFragment>apiAccessToken</KeyFragment>
        <KeyFragment ref="request.queryparam.client_id" />
    </CacheKey>
    <PurgeChildEntries>true</PurgeChildEntries>
</InvalidateCache>

Help or comments?