דוגמה: שמירה למטרה כללית

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

אפשר להשתמש בכללי מדיניות כדי לאחסן נתונים במטמון לשימוש כללי, כדי לאחזר אותם מהר יותר. באמצעות כללי המדיניות הבאים, שרת ה-proxy יכול לאחסן ולאחזר נתונים שנשמרו במטמון בזמן הריצה:

כללי המדיניות האלה מיועדים לשמירה כללית במטמון של נתונים שמשמשים את שרתי ה-proxy.

הקוד לדוגמה בנושא הזה מבוסס על שרת proxy לדוגמה של OAuth יוצא ב-GitHub (ראו רשימת דוגמאות). הדוגמה הזו משתמשת ב מדיניות מטמון לאחסון אסימון גישה מסוג OAuth לשימוש חוזר בכמה שיחות יוצאות.

כל סוג מדיניות מוגדר על ידי סכימת XML (.xsd). לידיעתך, סכימות של מדיניות זמינים ב-GitHub.

בדוגמה הבאה, אסימון גישה ל-OAuth נכתב במטמון באמצעות PopulateCache המדיניות בנושא אסימון ה-OAuth מאוחזר לבקשות הבאות באמצעות מדיניות LookupCache. אחרי ש התוקף של אסימון הגישה יפוג, 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>