ตัวอย่าง: การแคชเพื่อวัตถุประสงค์ทั่วไป

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

คุณสามารถใช้นโยบายเพื่อจัดเก็บข้อมูลในแคชสำหรับจุดประสงค์ทั่วไปเพื่อให้ดึงข้อมูลได้เร็วขึ้น เมื่อใช้นโยบายต่อไปนี้ พ็อกเก็ตจะจัดเก็บและดึงข้อมูลที่แคชไว้ได้เมื่อรันไทม์

นโยบายเหล่านี้ออกแบบมาสำหรับการแคชข้อมูลที่พร็อกซีใช้ทั่วไป

โค้ดตัวอย่างในหัวข้อนี้อิงตามพร็อกซีตัวอย่าง 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>