<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
配置如何从缓存中清除已缓存的值。
此政策适用于通用短期缓存。它与填充缓存政策(用于写入条目)和查询缓存政策(用于读取缓存条目)结合使用。
如需了解如何缓存后端资源的响应,请参阅 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> 属性
下表介绍了所有政策父元素通用的特性:
属性 | 说明 | 默认 | 状态 |
---|---|---|---|
name |
政策的内部名称。 (可选)使用 |
不适用 | 必填 |
continueOnError |
设置为 设置为 |
false | 可选 |
enabled |
设置为 设为 |
是 | 可选 |
async |
此特性已弃用。 |
false | 已弃用 |
<DisplayName> 元素
除了用于 name
属性之外,还可以用于在管理界面代理编辑器中给政策添加不同的自然语言名称标签。
<DisplayName>Policy Display Name</DisplayName>
默认 |
不适用 如果省略此元素,则会使用政策的 |
---|---|
状态 | 可选 |
类型 | 字符串 |
<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。当 CacheKey 前缀(即自定义前缀)不用于清除其他 API 代理添加的缓存条目时,必须提供 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> 元素
指定存储消息的缓存。
如果此政策(以及相应的 RePopupCache 和 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> 元素
在 <CacheKey>
元素中未提供 <Prefix>
元素时,用于构造缓存键前缀的枚举。
<Scope>scope_enumeration</Scope>
默认: |
“专有” |
状态: |
可选 |
类型: |
字符串 |
<Scope>
设置确定根据 <Scope>
值前置的缓存键。例如,将范围设置为 Exclusive
时,缓存键将采用以下格式:
orgName__envName__applicationName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]。
如果 <CacheKey>
中存在 <Prefix>
元素,则它会取代 <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 | 要从中获取值的变量。如果此元素包含字面量值,则不应使用此属性。 | 无 | 可选 | 字符串 |
使用说明
采用 PopulateCache 政策、LookupCache 政策和 InvalidateCache 政策的通用缓存使用您配置的缓存或默认添加的共享缓存。在大多数情况下,底层共享缓存应满足您的需求。如需使用此缓存,只需省略 <CacheResource>
元素即可。
如需详细了解如何配置缓存,请参阅创建和修改环境 缓存。如需详细了解底层数据存储区,请参阅缓存内部。
错误代码
本部分介绍当此政策触发错误时所设置的错误消息和流变量。在为代理开发故障规则时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息和处理故障。
错误代码前缀
不适用
运行时错误
此政策不会抛出任何运行时错误。
部署错误
在您部署包含此政策的代理时,可能会发生这些错误。
错误名称 | 原因 | 修复 |
---|---|---|
InvalidCacheResourceReference |
如果将 InvalidateCache 政策中的 <CacheResource> 元素设置为部署 API 代理的环境中不存在的名称,则会出现此错误。 |
build |
CacheNotFound |
如果尚未在特定的消息处理器组件上创建错误消息中提及的特定缓存,就会发生此错误。 | build |
故障变量
无
错误响应示例
不适用