查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
您可以使用政策將資料儲存在一般用途的快取中,加快擷取速度。使用 您的 Proxy 可在執行階段儲存及擷取快取資料:
- 填入快取政策 將資料加入快取
- LookupCache 政策 存取快取資料。
- InvalidateCache 政策 來清除快取
這些政策適用於一般快取 Proxy 使用的資料。
本主題的程式碼範例是根據 GitHub 中的傳出 OAuth 範例 Proxy 而得出 (請參閱 範例清單)。本範例使用 快取政策,儲存 OAuth 存取權杖,以便在多個傳出呼叫中重複使用。
每種政策類型都是由 XML 架構 (.xsd) 定義。您可以在 GitHub 上找到政策結構定義做為參考。
在以下範例中,系統會使用 PopulateCache 將 OAuth 存取權杖寫入快取 政策。LookupCache 政策會擷取 OAuth 權杖,以供後續要求使用。產生 存取權杖過期,系統會使用 JavaScript 擷取新的存取權杖;然後,系統會快取該權杖 來自 PopulateCache 政策
填入快取
使用 PopulateCache 政策,將資料寫入快取。本範例會將 OAuth 存取權杖寫入快取。如需政策參考資訊,請參閱 填入快取政策。
<PopulateCache name="token-cache"> <!-- The cache to write to. --> <CacheResource>mycache</CacheResource> <!-- The source of the data, a variable containing the value. --> <Source>twitter-translate.apiAccessToken</Source> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- A unique pointer (a flow variable value) to the data. Use this later to retrieve it. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> <!-- Entries placed into the cache with this policy will expire after 600 seconds. --> <ExpirySettings> <TimeoutInSec>600</TimeoutInSec> </ExpirySettings> </PopulateCache>
變數可透過政策或程式碼填入。這個模型中的 Source
變數
範例是由下列 JavaScript 呼叫填入:
context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
如要進一步瞭解快取金鑰,請參閱使用快取金鑰。
查詢快取資料
您可以使用 LookupCache 政策擷取快取值。下列 LookupCache 政策
讀取 mycache
中的值,並將值寫入
變數 twitter-translate.apiAccessToken
。政策參考資料
相關資訊,請參閱 LookupCache 政策。
<LookupCache name="token-cache"> <!-- The cache to read from. --> <CacheResource>mycache</CacheResource> <!-- Where to assign the retrieved value - here, a variable. --> <AssignTo>twitter-translate.apiAccessToken</AssignTo> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- The unique pointer (a flow variable value) that was used to store the data in the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> </LookupCache>
撤銷快取
您可以指定 HTTP 標頭,明確撤銷快取。收到包含指定 HTTP 標頭的要求時,系統會清除快取。如需政策參考資訊,請參閱「InvalidateCache 政策」。
<InvalidateCache name="InvalidateMyCache"> <!-- The cache to invalidate. --> <CacheResource>test-cache</CacheResource> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- Fragments constructing the unique pointer used when the data was put into the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" /> </CacheKey> <PurgeChildEntries>true</PurgeChildEntries> </InvalidateCache>