LookupCache 政策

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

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

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

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

元素參考資料

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

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

預設值:

N/A

外觀狀態:

必填

類型:

字串

<CacheKey> 元素

設定指向快取中儲存資料的專屬指標。

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

預設值:

N/A

外觀狀態:

必填

類型:

N/A

<CacheKey> 會建構儲存在快取中的每筆資料名稱。

在執行階段,系統會在 <KeyFragment> 值前面加上 <Scope> 元素值或 <Prefix> 值。舉例來說,下列程式碼會產生 UserToken__apiAccessToken__<value_of_client_id> 的快取鍵:

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

您會搭配 <Prefix><Scope> 使用 <CacheKey> 元素。詳情請參閱「處理快取金鑰」。

<CacheLookupTimeoutInSeconds> 元素

指定在快取查詢失敗後,經過多少秒會視為快取失敗。如果發生這種情況,流程會沿著快取失敗路徑繼續執行。

<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>

預設值:

30

外觀狀態:

選用

類型:

整數

<CacheResource> 元素

指定郵件的儲存快取。

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

<CacheResource>cache_to_use</CacheResource>

預設值:

N/A

外觀狀態:

選用

類型:

字串

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

<CacheKey> 元素

指定應納入快取鍵的值,為比對要求與快取回應建立命名空間。

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

預設值:

N/A

外觀狀態:

選用

類型:

N/A

這可以是鍵 (您提供的靜態名稱),也可以是值 (透過參照變數設定的動態項目)。所有指定的片段 (加上前置字串) 會串連在一起,形成快取金鑰。

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

您會搭配 <Prefix><Scope> 使用 <KeyFragment> 元素。詳情請參閱「處理快取金鑰」。

屬性

屬性 類型 預設 必填 說明
ref 字串

要取得值的變數。如果這個元素含有常值,則不應使用。

<CacheKey>/<Prefix> 元素

指定要用做快取鍵前置字串的值。

<Prefix>prefix_string</Prefix>

預設值:

N/A

外觀狀態:

選用

類型:

字串

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

您會搭配 <CacheKey><Scope> 使用 <Prefix> 元素。詳情請參閱「處理快取金鑰」。

<Scope> 元素

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

<Scope>scope_enumeration</Scope>

預設值:

「Exclusive」

外觀狀態:

選用

類型:

字串

<Scope> 設定會根據 <Scope> 值決定要預先加入的快取鍵。舉例來說,如果範圍設為 Exclusive,快取金鑰的格式如下: orgName__envName__applicationName__proxy|TargetName__ [ serializedCacheKey ]。

如果 <CacheKey> 中有 <Prefix> 元素,系統會優先採用該元素的值,而非 <Scope> 元素的值。有效值包括下列列舉。

您會搭配 <CacheKey><Prefix> 使用 <Scope> 元素。詳情請參閱「處理快取金鑰」。

可接受的值

Global

環境中部署的所有 API Proxy 都會共用快取金鑰。快取金鑰會以 orgName __ envName __ 格式預先附加。

如果您使用 <KeyFragment> apiAccessToken 和 <Global> 範圍定義 <CacheKey> 項目,每個項目都會儲存為 orgName__envName__apiAccessToken,後面接著存取權杖的序列化值。如果 API Proxy 部署在名為「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」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 政策中定義的快取行為後,即可使用下列預先定義的流程變數。

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

錯誤代碼

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

錯誤代碼前置字串

不適用

執行階段錯誤

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

部署錯誤

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

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

錯誤變數

不適用

錯誤回應範例

不適用