使用快取金鑰

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

使用快取政策時,您可以設定快取,確保快取值金鑰的唯一性 鍵。快取金鑰以及其他可設定的值,能讓您以可靠的方式 顯示您加入的資料快取金鑰與填入快取政策查詢快取政策InvalidateCache 政策回應快取 政策

設定元素的值 -- <CacheKey>/<KeyFragment><Scope><Prefix> -- 串連起來,建立與 您放入快取中的值您使用相同的設定擷取值。

使用下列快取政策設定元素,即可建立快取金鑰:

快取設定元素 說明
<CacheKey>/<KeyFragment> 結合使用 <CacheKey> <KeyFragment> 元素: 為快取項目指定不重複的 ID。KeyFragment 值可以是靜態常值, 透過變數設定
<Scope><Prefix> 如要進一步使用 <Scope><Prefix> 元素 命名空間快取金鑰<Scope> 會列舉預先定義值的清單。 <Prefix> 元素會透過值覆寫 <Scope> 自訂內容

這些值會串連成下列格式,其中 <Scope><Prefix> 值,以雙底線分隔。 多個 KeyFragment 值之間也會以雙底線分隔。

範圍 |prefix__keyfragment[__keyfragment]

使用回應快取 政策,您可以選擇用「接受」回應中的值附加這個快取金鑰 標題。

使用 <CacheKey>

<CacheKey> 元素會設定 Edge 建立專屬 ID 的方式 (金鑰) 代表系統建立的每個快取項目。邊緣擷取快取值時,會使用快取 即可找到正確值。在 ResponseCache 政策中,有一項設定會定義索引鍵 執行快取和擷取作業在 PopulateCache 和 LookupCache 政策中,每項政策都必須 包含相同的 <CacheKey> 元素,以確保從 則對應在該處加入的值。

<CacheKey> 元素可包含多個 <KeyFragment> 元素。在執行階段中,由管理員指定的值 <KeyFragment> 元素在以下項目之間以兩條底線串連在一起 組成部分快取金鑰

例如,下列設定會建立 hello__world 的值,以供使用 中的值:

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

您也可以透過參照 <KeyFragment> 元素,如下所示:

<KeyFragment ref="variable_name"/>

舉例來說,若要快取金鑰值包含要求訊息的 Content-Type; 方法如下:

<KeyFragment ref="request.header.Content-Type"/>

在下列設定中,request.header.Content-Type 變數具有 值 application/json

<CacheKey>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

這就會產生結尾為 apiAccessToken__application/json__bar 的快取金鑰。

如需可用變數的清單,請參閱變數參考資料

從查詢衍生的快取金鑰 參數

使用 request.queryparam.<queryparam_name> 等變數和 request.querystring 您可以設定快取金鑰,讓金鑰包含要求查詢字串的一部分。適用對象 舉例來說,以下網址使用了「param1」和「param2」這兩個查詢參數,您可以 快取金鑰:

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

您的 <CacheKey> 元素可與設定整合這些值 例如:

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

在執行階段,快取金鑰會包含串連的參數值,如 包括:

other_key_parts__value1__value2

請注意,透過變數插入參數值時, 依 <KeyFragment> 元素順序建議的順序串連。另外, 請注意,Edge 只會使用您明確參照的值 <KeyFragment> 元素。如果您的要求查詢參數清單不同, 但不會考慮快取金鑰中的任何變化版本。

另一種方法是使用 request.querystring 變數,系統就會插入 參數當做快取金鑰的一部分。請注意,雖然這個方法 所有的參數,如果參數順序因一個要求而異,則 鍵的值會有所不同。也就是 param1=value1&param2=value2param2=value2&param1=value1 不會產生相同的快取金鑰值。

如需可用變數的清單,請參閱變數參考資料

使用 <Scope>和 <Prefix>

<Scope><Prefix> 元素可讓您 請用命名空間前置字串擴充索引鍵。它們代表的值會在快取前面加上 鍵。

系統預設會使用 <Scope> 元素。這是一個列舉,其值 範圍從廣到精,最小為預設值。如未使用這個預設值, 您指定其他值或指定 <Prefix> 元素值。你可以 使用 <Prefix> 元素覆寫 <Scope> 值;以及 因此請指定自訂命名空間的值

例如,<Scope> 值「Global」-- 最廣的範圍,代表 機構和環境名稱因此,如果您的 Proxy 是部署在名為 「mycompany」和名為「prod」的環境,產生的前置值會是 包括:

設定 結果
<Scope>Global</Scope> mycompany__prod__

如果您使用 Global 範圍搭配上述定義的快取金鑰,結果會是: 如下:

設定 結果
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world

LookupCache 政策所述,範圍 並設定從「全域」變更為「專屬」專屬範圍則是 因此代表在特定快取中發生命名空間衝突的風險最低。 每個具有專屬範圍的快取項目都會以下列格式開頭:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

例如,使用 <Scope> 的「專屬值」建立的快取金鑰 看起來會像這樣:

apifactory__test__weatherapi__16__default__apiAccessToken