مثال: التخزين المؤقت للأغراض العامة

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

يمكنك استخدام السياسات لتخزين البيانات في ذاكرة تخزين مؤقتة للأغراض العامة لاستردادها بشكل أسرع. باستخدام يمكن للخادم الوكيل تخزين البيانات المخزَّنة مؤقتًا واستردادها في وقت التشغيل:

هذه السياسات مصمّمة للتخزين المؤقت العام للبيانات التي تستخدمها الخوادم الوكيلة.

يستند نموذج الرمز البرمجي في هذا الموضوع إلى نموذج وكيل OAuth الخارجي في جيت هب (راجع قائمة النماذج). يستخدم هذا النموذج دالة سياسة ذاكرة التخزين المؤقت لتخزين رمز دخول OAuth لإعادة استخدامه في مكالمات صادرة متعددة.

يتم تحديد كل نوع سياسة من خلال مخطط XML (.xsd). كمرجع لك، مخطّطات السياسات المتوفرة على GitHub.

في المثال التالي، تتم كتابة رمز دخول OAuth إلى ذاكرة التخزين المؤقت باستخدام ذاكرة التخزين المؤقت Populatecache . ويتم استرداد رمز OAuth المميز للطلبات اللاحقة من خلال سياسة WebGLcache. بمجرد عند انتهاء صلاحية رمز الدخول، يتم استخدام 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());

لمزيد من المعلومات عن مفاتيح ذاكرة التخزين المؤقت، يمكنك الاطّلاع على العمل باستخدام مفاتيح ذاكرة التخزين المؤقت.

البحث في البيانات المخزَّنة مؤقتًا

ويمكنك استرداد القيم المخزَّنة مؤقتًا باستخدام السياسة Verifycache. تقرأ سياسة 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 المحدد، فسيتم مسح ذاكرة التخزين المؤقت. للسياسة للحصول على معلومات مرجعية، يُرجى الاطّلاع على سياسة Spamatecache.

<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>