キャッシュから値を削除する方法を構成します。
このポリシーは、キャッシュに汎用的な目的で短期間保存する場合に使用します。Populate Cache ポリシー(エントリの書き込み)や Lookup Cache ポリシー(キャッシュ内のエントリの読み込み)と組み合わせて使用します。
バックエンド リソースのレスポンスのキャッシュについては、Response Cache ポリシーをご覧ください。
要素リファレンス
このポリシーで構成できる要素は次のとおりです。
<InvalidateCache async="false" continueOnError="false" enabled="true" name="policy-name"> <DisplayName>Policy Name</DisplayName> <CacheKey> <Prefix>prefix_string</Prefix> <KeyFragment ref="variable_reference"/> <KeyFragment>fragment_string</KeyFragment> </CacheKey> <!-- Omit this element if you're using the included shared cache. --> <CacheResource>cache_to_use</CacheResource> <Scope>scope_enumeration</Scope> <CacheContext> <APIProxyName>application_that_added_the_entry</APIProxyName> <ProxyName>proxy_for_which_data_was_cached</ProxyName> <TargetName>endpoint_for_which_data_was_cached</TargetName> </CacheContext> <PurgeChildEntries>true_to_purge_all_child_entries</PurgeChildEntries> </InvalidateCache>
<InvalidateCache> 属性
The following table describes attributes that are common to all policy parent elements:
Attribute | Description | Default | Presence |
---|---|---|---|
name |
The internal name of the policy. The value of the Optionally, use the |
N/A | Required |
continueOnError |
Set to Set to |
false | Optional |
enabled |
Set to Set to |
true | Optional |
async |
This attribute is deprecated. |
false | Deprecated |
<DisplayName> element
Use in addition to the name
attribute to label the policy in the
management UI proxy editor with a different, natural-language name.
<DisplayName>Policy Display Name</DisplayName>
Default |
N/A If you omit this element, the value of the policy's |
---|---|
Presence | Optional |
Type | String |
<CacheContext> / <APIProxyName> 要素
キャッシュ エントリを追加したアプリケーションの名前を指定します。
<APIProxyName>application_that_added_the_entry</APIProxyName>
属性
属性 | 説明 | デフォルト | 要否 | 型 |
---|---|---|---|---|
ref | アプリケーション名を格納する変数。 | なし | 省略可 | 文字列 |
<CacheContext> 要素
Prefix
要素の値が指定されていない場合にキャッシュキーを作成する方法、または別の API プロキシによって追加されたキャッシュ エントリを消去する方法を指定します。
<CacheContext> <APIProxyName ref="variable_name">application_that_added_the_entry</APIProxyName> <TargetName ref="variable_name">endpoint_for_which_data_was_cached</TargetName> <ProxyName ref="variable_name">proxy_for_which_data_was_cached</ProxyName> </CacheContext>
CacheKey の作成に使用します。別の API プロキシが追加したキャッシュ エントリをクリアするときに CacheKey の接頭辞(カスタムの接頭辞)を使用しない場合は、APIProxyName、ProxyName、TargetName の値は必須です。
<CacheKey> 要素
キャッシュに保存されているデータを参照する一意のポインタを構成します。
<CacheKey> <Prefix>string</Prefix> <KeyFragment ref="variable_name" /> <KeyFragment>literal_string</KeyFragment> </CacheKey>
デフォルト: |
なし |
要否: |
必須 |
型: |
なし |
<CacheKey>
はキャッシュに保存される各データの名前を構成します。
実行時に、<KeyFragment>
変数には <Scope>
要素の値または <Prefix>
の値が取り込まれます。たとえば次の場合、キャッシュキーは UserToken__apiAccessToken__
<value_of_client_id> になります。
<CacheKey> <Prefix>UserToken</Prefix> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" /> </CacheKey>
<CacheKey>
要素は <Prefix>
や <Scope>
と組み合わせて使用します。詳細については、キャッシュキーの使用をご覧ください。
<CacheResource> 要素
メッセージを保存するキャッシュを指定します。
このポリシー(対応する PopulateCache ポリシーと LookupCache ポリシーを含む)が組み込みの共有キャッシュを使用している場合は、この要素を省略します。
<CacheResource>cache_to_use</CacheResource>
デフォルト: |
なし |
要否: |
省略可 |
型: |
文字列 |
キャッシュの構成方法については、環境キャッシュの作成と編集をご覧ください。
<CacheKey> / <KeyFragment> 要素
キャッシュキーに含める値を指定する要素です。この値を使用して、リクエストをキャッシュに保存されたレスポンスと照合するための名前空間が作成されます。
<KeyFragment ref="variable_name"/> <KeyFragment>literal_string</KeyFragment>
デフォルト: |
なし |
要否: |
省略可 |
型: |
なし |
この要素には、キー(ユーザーが指定する静的な名前)または値(変数を参照して動的に設定されるエントリ)を指定できます。指定されたすべてのフラグメント(および接頭辞)が連結されてキャッシュキーが作成されます。
<KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" />
<KeyFragment>
要素は <Prefix>
や <Scope>
と組み合わせて使用します。詳細については、キャッシュキーの使用をご覧ください。
属性
属性 | 説明 | デフォルト | 要否 | 型 |
---|---|---|---|---|
ref | 値を取得する変数。この要素にリテラル値が含まれている場合は、使用できません。 | なし | 省略可 | 文字列 |
<CacheKey> / <Prefix> 要素
キャッシュキーの接頭辞として使用する値を指定する要素です。
<Prefix>prefix_string</Prefix>
デフォルト: |
なし |
要否: |
省略可 |
型: |
文字列 |
<Scope>
列挙値ではなく独自の値を指定するには、<Scope>
の代わりにこの要素の値を使用します。この要素が定義されている場合、<Prefix>
によって、キャッシュに書き込まれたエントリの先頭にキャッシュキー値が付加されます。<Prefix>
要素の値は <Scope>
要素の値をオーバーライドします。
<Prefix>
要素は <CacheKey>
や <Scope>
と組み合わせて使用します。詳細については、キャッシュキーの使用をご覧ください。
<CacheContext> / <ProxyName> 要素
データをキャッシュに保存したプロキシの名前を指定します。
<ProxyName>proxy_for_which_data_was_cached</ProxyName>
デフォルト: |
なし |
要否: |
省略可 |
型: |
文字列 |
属性
属性 | 説明 | デフォルト | 要否 | 型 |
---|---|---|---|---|
ref | 値を取得する変数。この要素にリテラル値が含まれている場合は、使用できません。 | なし | 省略可 | 文字列 |
<PurgeChildEntries> 要素
true
: このポリシーに対して構成された <KeyFragment>
要素によって設定された値を共有するキャッシュ エントリを削除します。キャッシュキーの他の部分(<Prefix>
要素など)の値は考慮されません。
<KeyFragment>
要素を指定する必要があります。指定しない場合、<PurgeChildEntries>
を true に設定すると、キャッシュ内のすべてのエントリが削除される可能性があります。
同じキー フラグメント値を持つキャッシュ エントリをすべて無効にすると、複数の関連エントリを同時に削除できます。
<PurgeChildEntries>true_to_purge_child_entries</PurgeChildEntries>
デフォルト: |
false |
要否: |
省略可 |
型: |
ブール値 |
<Scope> 要素
<Prefix>
要素が <CacheKey>
要素に指定されていない場合に、キャッシュキーの接頭辞を作成するために使用される列挙値です。
<Scope>scope_enumeration</Scope>
デフォルト: |
「Exclusive」 |
要否: |
省略可 |
型: |
文字列 |
<Scope>
の設定は、<Scope>
の値に応じて接頭辞が付加されるキャッシュキーを決定します。たとえば、スコープが Exclusive
に設定されている場合、キャッシュキーは次の形式になります。
orgName__envName__applicationName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]
<Prefix>
要素が <CacheKey>
に含まれている場合、この要素の値が <Scope>
要素の値を置き換えます。有効な値には、以下の列挙値が含まれます。
<Scope>
要素は <CacheKey>
や <Prefix>
と組み合わせて使用します。詳細については、キャッシュキーの使用をご覧ください。
有効な値
スコープ値 | 説明 |
---|---|
Global |
キャッシュキーが、環境にデプロイされているすべての API プロキシで共有されます。キャッシュキーは、orgName __ envName __ の形式で値の先頭に付加されます。
|
Application |
API プロキシ名が接頭辞として使用されます。 キャッシュキーは orgName__envName__applicationName という形式で追加されます。 |
Proxy |
ProxyEndpoint 構成が接頭辞として使用されます。 キャッシュキーは、orgName__envName__applicationName__deployedRevisionNumber__proxyEndpointName という形式で値の先頭に追加されます。 |
Target |
TargetEndpoint 構成が接頭辞として使用されます。 キャッシュキーは orgName__envName__applicationName__deployedRevisionNumber__targetEndpointName という形式で追加されます。 |
Exclusive |
デフォルト。これが最も特定的なスコープであるため、特定のキャッシュ内で名前空間が競合するリスクが最小限になります。 接頭辞は次のいずれかの形式をとります。
キャッシュキーは、orgName__envName__applicationName__deployedRevisionNumber__proxyNameITargetName という形式で値の先頭に追加されます。 たとえば、完全な文字列は次のようになります。 apifactory__test__weatherapi__16__default__apiAccessToken |
<CacheContext> / <TargetName> 要素
データをキャッシュに保存したターゲット エンドポイントの名前を指定します。
<TargetName>endpoint_for_which_data_was_cached</TargetName>
デフォルト: |
なし |
要否: |
省略可 |
型: |
文字列 |
属性
属性 | 説明 | デフォルト | 要否 | 型 |
---|---|---|---|---|
ref | 値を取得する変数。この要素にリテラル値が含まれている場合は、使用できません。 | なし | 省略可 | 文字列 |
使用上の注意
Populate Cache ポリシー、LookupCache ポリシー、InvalidateCache ポリシーで汎用目的のキャッシュを使用する場合、ユーザーが構成したキャッシュかデフォルトの共有キャッシュが使用されます。ほとんどの場合、基盤となる共有キャッシュで十分なはずです。このキャッシュを使用するには、<CacheResource>
要素を省略します。
キャッシュの構成方法については、環境キャッシュの作成と編集をご覧ください。基盤となるデータストアについて詳しくは、キャッシュの仕組みをご覧ください。
エラーコード
このセクションでは、このポリシーがエラーをトリガーしたときに設定されるエラー メッセージとフロー変数について説明します。これは、プロキシの障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。
エラーコードの接頭辞
なし
ランタイム エラー
このポリシーはランタイム エラーをスローしません。
デプロイエラー
以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。
エラー名 | 原因 | 修正 |
---|---|---|
InvalidCacheResourceReference |
このエラーは、API プロキシがデプロイされている環境に存在しない名前が InvalidateCache ポリシーの <CacheResource> 要素に設定されている場合に発生します。 |
build |
CacheNotFound |
このエラーは、エラー メッセージに記述されているキャッシュが、特定の Message Processor コンポーネント上に作成されていない場合に発生します。 | build |
障害変数
なし
エラー レスポンスの例
なし