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

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلىمستندات Apigee X.
info

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

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

يستند نموذج الرمز البرمجي في هذا الموضوع إلى نموذج الخادم الوكيل Outbound 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>