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

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

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

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

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

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

في المثال التالي، تتم كتابة رمز الدخول المميز عبر بروتوكول OAuth إلى ذاكرة التخزين المؤقت باستخدام سياسة التعبئة والذاكرة. يتم استرداد رمز 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 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>