LookupCache 政策

您正在查看 Apigee Edge 說明文件。
請參閱 Apigee X 說明文件
info

設定如何在執行階段擷取快取值。

這項政策適用於一般用途的短期快取。這項政策會與Populate Cache policy (用於寫入項目) 和Invalidate Cache policy (用於撤銷項目) 搭配使用。

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

元素參考

下列為您列出可在本政策中設定的元素。

<LookupCache async="false" continueOnError="false" enabled="true" name="Lookup-Cache-1">
    <DisplayName>Lookup Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <CacheLookupTimeoutInSeconds/>
    <Scope>Exclusive</Scope>
    <AssignTo>flowVar</AssignTo>
</LookupCache>

根據預設,系統會附上共用快取。如要使用共用快取,請略過此政策設定中的 <CacheResource> 元素。

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

<LookupCache> 屬性

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

屬性 說明 預設 存在必要性
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 屬性值會是

存在必要性 選用
類型 字串

<AssignTo> 元素

指定快取項目從快取記憶體擷取後指派的變數。變數必須可寫入。如果快取查詢未擷取值,則不會設定變數。

<AssignTo>variable_to_receive_cached_value</AssignTo>

預設值:

不適用

外觀狀態:

必填

類型:

字串

<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> 搭配使用。詳情請參閱「使用快取鍵」。

<CacheLookupTimeoutInSeconds> 元素

指定快取查詢失敗後,系統會將其視為快取遺漏的秒數。如果發生這種情況,流程會沿著快取遺漏路徑恢復。

<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>

預設值:

30

外觀狀態:

選用

類型:

整數

<CacheResource> 元素

指定訊息應儲存在哪個快取中。

如果這項政策 (以及相對應的 PopulateCache 和 InvalidateCache 政策) 使用內含的共用快取,請完全省略這個元素。

<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> 搭配使用。詳情請參閱「使用快取鍵」。

<Scope> 元素

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

<Scope>scope_enumeration</Scope>

預設值:

「獨家」

外觀狀態:

選用

類型:

字串

<Scope> 設定會決定快取索引鍵,並根據 <Scope> 值加在前面。舉例來說,當範圍設為 Exclusive 時,快取鍵會採用以下格式: orgName__envName__applicationName__proxy|TargetName__ [ serializedCacheKey ].

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

您可以將 <Scope> 元素與 <CacheKey><Prefix> 搭配使用。詳情請參閱「使用快取鍵」。

可接受的值

Global

快取索引鍵會在環境中部署的所有 API Proxy 之間共用。快取索引鍵會以 orgName __ envName __ 的格式置於前方。

如果您使用 <KeyFragment> apiAccessToken 和 <Global> 範圍定義 <CacheKey> 項目,每個項目都會儲存為 orgName__envName__apiAccessToken,後面接著存放存取權杖的序列化值。如果 API 代理程式是在名為「apifactory」的機構中,以名為「test」的環境中部署,存取權杖會儲存在下列快取鍵下:apifactory__test__apiAccessToken

Application

API Proxy 名稱會做為前置字串。

快取鍵的格式為 orgName__envName__applicationName

Proxy

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

快取索引鍵的格式為 orgName__envName__applicationName__proxyEndpointName

Target

使用 TargetEndpoint 設定做為前置字串。

快取索引鍵的開頭為 orgName__envName__applicationName__targetEndpointName 格式。

Exclusive

預設。這是最具體的做法,因此在特定快取中發生命名空間衝突的風險也最低。

前置字串有兩種形式:

  • 如果政策是附加至 ProxyEndpoint 流程,前置字串的格式為 ApiProxyName_ProxyEndpointName
  • 如果政策附加在 TargetEndpoint,前置字串的格式為 ApiProxyName_TargetName

快取鍵前置的格式為 orgName__envName__applicationName__proxyNameITargetName

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

apifactory__test__weatherapi__16__default__apiAccessToken

使用須知

請將這項政策用於一般用途快取。在執行階段,LookupCache 政策會從快取中擷取值,並將該值指派給您使用 AssignTo 元素指定的變數 (如果沒有擷取任何值,則不會設定變數)。系統會根據透過結合 CacheKey 和 Scope 元素的設定建立的快取鍵,尋找該值。換句話說,如要擷取 PopulateCache 政策新增至快取的特定值,LookupCache 政策必須以與 PopulateCache 政策相同的方式設定快取鍵相關元素。

使用 Populate Cache 政策、LookupCache 政策和 InvalidateCache 政策的一般用途快取,會使用您設定的快取,或預設包含的共用快取。在大多數情況下,底層共用快取應可滿足您的需求。如要使用預設快取,請省略 <CacheResource> 元素。

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

流程變數

您可以使用流程變數,根據 HTTP 標頭或訊息內容,或流程中可用的內容,設定政策和流程的動態執行階段行為。如要進一步瞭解流程變數,請參閱「變數參考資料」。

自訂 LookupCache 政策中定義的快取行為後,您可以使用下列預先定義的 Flow 變數。

變數 類型 權限 說明
lookupcache.{policy-name}.cachename 字串 唯讀 傳回政策中使用的快取名稱。
lookupcache.{policy-name}.cachekey 字串 唯讀 傳回所使用的鍵。
lookupcache.{policy-name}.cachehit 布林值 唯讀 如果政策找到指定快取鍵的值,則為 True。
lookupcache.{policy-name}.assignto 字串 唯讀 傳回快取指派的變數。

錯誤代碼

This section describes the error messages and flow variables that are set when this policy triggers an error. This information is important to know if you are developing fault rules for a proxy. To learn more, see What you need to know about policy errors and Handling faults.

Error code prefix

N/A

Runtime errors

This policy does not throw any runtime errors.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference This error occurs if the <CacheResource> element is set to a name which does not exist in the environment where the API proxy is being deployed.
InvalidTimeout If the <CacheLookupTimeoutInSeconds> element is set to a negative number, then the deployment of the API proxy fails.
CacheNotFound This error occurs if the specific cache mentioned in the error message has not been created on a specific Message Processor component.

Fault variables

N/A

Example error response

N/A