InvalidateCache 政策

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

設定如何從快取中清除快取值。

這項政策適用於一般用途的短期快取,用於 搭配 Populate 快取政策 (用於寫入項目) 和查詢快取政策 (用於讀取快取項目)。

如要快取後端資源的回應,請參閱 回應快取政策

元素參照

以下列出您可以為這項政策設定的元素。

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

&lt;InvalidateCache&gt;屬性

下表說明所有政策父項元素的共同屬性:

屬性 說明 預設 存在必要性
name

政策的內部名稱。name 屬性的值可以 包含英文字母、數字、空格、連字號、底線和半形句號。此值不能 超過 255 個半形字元

視需要使用 <DisplayName> 元素,為政策加上標籤: 管理使用者介面 Proxy 編輯器,使用不同的自然語言名稱。

不適用 必填
continueOnError

如果設為「false」,系統會在政策失敗時傳回錯誤。這是可預期的情況 大多數政策的行為

如果設為 true,即使政策已發生,流程執行作業仍會繼續執行 失敗。

false 選用
enabled

如要強制執行政策,請設為 true

設為 false 即可停用政策。這項政策不會 仍會強制執行 政策。

true 選用
async

此屬性已淘汰。

false 已淘汰

&lt;DisplayName&gt;元素

name 屬性外,一併使用 管理 UI Proxy 編輯器,使用不同的自然語言名稱。

<DisplayName>Policy Display Name</DisplayName>
預設

不適用

如果省略這個元素,政策的 name 屬性值會是

存在必要性 選用
類型 字串

&lt;CacheContext&gt;/&lt;APIProxyName&gt;元素

指定新增快取項目的應用程式名稱。

<APIProxyName>application_that_added_the_entry</APIProxyName>

屬性

屬性 說明 預設 存在必要性 類型
參考資料 包含應用程式名稱的變數。 不適用 選用 字串

&lt;CacheContext&gt;元素

指定在 Prefix 元素值非可用時建構快取金鑰的方式 或清除其他 API Proxy 新增的快取項目。

<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。APIProxyName、ProxyName 和 TargetName 的值為 如果不使用 CacheKey 前置字串 (也就是自訂的前置字串) 來清除快取項目,就會強制要求 其他 API Proxy 所新增的 IP 位址。

&lt;CacheKey&gt;元素

設定儲存在快取中資料的唯一指標。

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

預設:

不適用

所在地:

必填

類型:

不適用

<CacheKey> 會建立儲存在 快取。

在執行階段,<KeyFragment> 值會在前面加上 <Scope> 元素值或 <Prefix> 值。舉例來說, 產生的快取金鑰 UserToken__apiAccessToken__&lt;value_of_client_id&gt;:

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

請將 <CacheKey> 元素與 <Prefix><Scope>。詳情請參閱使用快取金鑰

&lt;CacheResource&gt;元素

指定應儲存訊息的快取。

如果這項政策 (以及對應的 PopulateCache 與 LookupCache 政策) 使用的是納入的共用快取。

<CacheResource>cache_to_use</CacheResource>

預設:

不適用

所在地:

選用

類型:

字串

如要進一步瞭解如何設定快取,請參閱建立及編輯環境 快取。

&lt;CacheKey&gt;/&lt;KeyFragment&gt;元素

指定要納入快取金鑰的值,建立用來比對的命名空間 快取回應產生的要求。

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

預設:

不適用

所在地:

選用

類型:

不適用

這可以是鍵 (您提供的靜態名稱) 或值 (由 參照變數)。所有指定片段組合 (加上前置字串) 都會串連 建立快取金鑰

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

請將 <KeyFragment> 元素與 <Prefix><Scope>。詳情請參閱使用快取金鑰

屬性

屬性 說明 預設 存在必要性 類型
參考資料 用來取得值的變數。如果這個元素包含 常值。 不適用 選用 字串

&lt;CacheKey&gt;/&lt;Prefix&gt;元素

指定要做為快取金鑰前置字串的值。

<Prefix>prefix_string</Prefix>

預設:

不適用

所在地:

選用

類型:

字串

如要指定自己的值,請使用這個值,而非 <Scope> 而非 <Scope> 列舉值。如已定義 <Prefix> 會在寫入快取的項目前面加上快取金鑰值。A 罩杯 <Prefix> 元素值會覆寫 <Scope> 元素 值。

請將 <Prefix> 元素與 <CacheKey><Scope>。詳情請參閱使用快取金鑰

&lt;CacheContext&gt;/&lt;ProxyName&gt;元素

指定快取資料的 Proxy 名稱。

<ProxyName>proxy_for_which_data_was_cached</ProxyName>

預設:

不適用

所在地:

選用

類型:

字串

屬性

屬性 說明 預設 存在必要性 類型
參考資料 用來取得值的變數。如果這個元素包含 常值。 不適用 選用 字串

&lt;PurgeChildEntries&gt;元素

true:清除共用由 已為這項政策設定 <KeyFragment> 元素。在 快取金鑰不包括在 <Prefix> 元素中。

請注意,必須指定 <KeyFragment> 元素。如果不是 將 <PurgeChildEntries> 設為 true 時,系統可能會清除以下值區的所有項目: 快取。

撤銷相同鍵片段值的所有快取項目,有效 一次清除多個相關項目。

<PurgeChildEntries>true_to_purge_child_entries</PurgeChildEntries>

預設:

false

所在地:

選用

類型:

布林值

&lt;Scope&gt;元素

<Prefix> 時,用於建構快取金鑰的前置字串的列舉 未在 <CacheKey> 元素中提供。

<Scope>scope_enumeration</Scope>

預設:

「獨家」

所在地:

選用

類型:

字串

<Scope> 設定會決定系統會根據 <Scope> 值。舉例來說,快取金鑰採用以下格式時 範圍設為 Exclusive

orgName__envName__applicationName__deployedRevisionNumber__proxy|TargetName__ [serializedCacheKey]。

如果 <CacheKey> 中有 <Prefix> 元素, 會取代 <Scope> 元素值。有效值包括列舉值 。

請將 <Scope> 元素與 <CacheKey><Prefix>。詳情請參閱使用快取金鑰

可接受的值

範圍值 說明
Global

部署於環境中的所有 API Proxy 會共用快取金鑰。快取金鑰為 前面加上 orgName __ envName __。

如果您使用<CacheKey> <KeyFragment> apiAccessToken 和 <Global> 範圍, 每個項目都會儲存為 orgName__envName__apiAccessToken,後面接著 存取權杖的序列化值。如為部署在名為 「test」存取權杖儲存在名為「apiFactory」的機構中 下列快取金鑰:apifactory__test__apiAccessToken

Application

系統會使用 API Proxy 名稱做為前置字串。

快取金鑰會加在下列格式中 orgName__envName__applicationName.

Proxy

系統會使用 ProxyEndpoint 設定做為前置字串。

快取金鑰會加在下列格式中 orgName__envName__applicationName__deployedRevisionNumber__proxyEndpointName ,直接在 Google Cloud 控制台實際操作。

Target

目標端點設定會用作前置字串。

表單前面加上的快取金鑰 orgName__envName__applicationName__deployedRevisionNumber__targetEndpointName ,直接在 Google Cloud 控制台實際操作。

Exclusive

預設。這是最具體的,因此對命名空間帶來的風險最低 特定快取中的衝突。

前置字串為兩種形式之一:

  • 如果政策已附加至 ProxyEndpoint 流程,前置字串就是 格式為 ApiProxyName_ProxyEndpointName
  • 如果政策是在 TargetEndpoint 附加,前置字元為以下格式: ApiProxyName_TargetName.

表單前面加上的快取金鑰 orgName__envName__applicationName__deployedRevisionNumber__proxyNameITargetName

舉例來說,完整字串可能如下所示:

apifactory__test__weatherapi__16__default__apiAccessToken

&lt;CacheContext&gt;/&lt;TargetName&gt;元素

指定快取資料的目標端點名稱。

<TargetName>endpoint_for_which_data_was_cached</TargetName>

預設:

不適用

所在地:

選用

類型:

字串

屬性

屬性 說明 預設 存在必要性 類型
參考資料 用來取得值的變數。如果這個元素包含 常值。 不適用 選用 字串

使用須知

使用填入快取政策查詢快取政策和 InvalidateCache 政策會使用您設定的快取,或包含在以下項目的共用快取: 預設值。在大部分情況下,基礎共用快取應能滿足您的需求。如要使用這個快取 只要省略 <CacheResource> 元素即可。

如要進一步瞭解如何設定快取,請參閱建立及編輯環境 快取。如要進一步瞭解基礎資料儲存庫,請參閱「快取內部」。

錯誤代碼

本節說明這項政策觸發錯誤時設定的錯誤訊息和流程變數。如果您正在開發 Proxy 的錯誤規則,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

錯誤代碼前置字串

不適用

執行階段錯誤

這項政策不會擲回任何執行階段錯誤。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidCacheResourceReference 如果 InvalidateCache 政策中的 <CacheResource> 元素設定的名稱不在部署 API Proxy 的環境中,就會發生這個錯誤。
CacheNotFound 如果尚未在特定的訊息處理器元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。

錯誤變數

不適用

錯誤回應範例

不適用