範例:一般用途快取

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

您可以使用政策將資料儲存在一般用途的快取中,加快擷取速度。使用 您的 Proxy 可在執行階段儲存及擷取快取資料:

,瞭解如何調查及移除這項存取權。

這些政策適用於一般快取 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>