التعامل مع مفاتيح ذاكرة التخزين المؤقت

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

عند استخدام سياسات ذاكرة التخزين المؤقت، يمكنك ضمان تفرد مفاتيح القيم المخزّنة مؤقتًا من خلال ضبط مفاتيح ذاكرة التخزين المؤقت. يمنحك مفتاح ذاكرة التخزين المؤقت، إلى جانب القيم الأخرى التي يمكنك ضبطها، طريقة موثوقة لاسترداد البيانات نفسها التي أدخلتها. يمكنك استخدام مفاتيح ذاكرة التخزين المؤقت مع سياسة "تعبئة ذاكرة التخزين المؤقت" وسياسة LookupCache وسياسة InvalidateCache وسياسة Response Cache.

يتم ربط قيم عناصر الإعدادات، أي <CacheKey>/<KeyFragment> و<Scope> و<Prefix>، لإنشاء معرّف مرتبط بالقيمة التي تضعها في ذاكرة التخزين المؤقت. يمكنك استخدام الإعداد نفسه لاسترداد القيمة.

باستخدام عناصر إعدادات سياسة ذاكرة التخزين المؤقت التالية، يمكنك إنشاء مفتاح ذاكرة تخزين مؤقت:

عنصر إعدادات ذاكرة التخزين المؤقت الوصف
<CacheKey> / <KeyFragment> استخدِم عناصر <CacheKey> <KeyFragment> معًا لتحديد معرّف فريد لإدخالات ذاكرة التخزين المؤقت. يمكن أن تكون قيم KeyFragment عبارة عن سلاسل حرفية ثابتة أو يمكن ضبطها من خلال متغيرات.
<Scope> أو <Prefix> استخدِم العنصرَين <Scope> أو <Prefix> لتحديد مساحة الاسم بشكل أكبر لمفاتيح ذاكرة التخزين المؤقت. تعدّد السمة <Scope> قائمة بالقيم المحدّدة مسبقًا. يحلّ العنصر <Prefix> محلّ <Scope> بقيمة من اختيارك.

يتم ربط هذه القيم بالشكل التالي، مع فصل قيم <Scope> أو <Prefix> عن قيم KeyFragment باستخدام شرطتَين سفليتَين. يتم أيضًا الفصل بين قيم KeyFragment المتعددة بشرطتَين سفليتَين.

scope | prefix__keyfragment[__keyfragment]

باستخدام سياسة ذاكرة التخزين المؤقت للاستجابات، يمكنك بشكل اختياري إلحاق مفتاح ذاكرة التخزين المؤقت هذا بقيم من عنوان Accept للاستجابة.

استخدام <CacheKey>

يضبط العنصر <CacheKey> طريقة إنشاء Edge لمعرّف فريد (مفتاح) لكل إدخال في ذاكرة التخزين المؤقت. عندما يستردّ Edge القيمة المخزّنة مؤقتًا، يستخدم مفتاح التخزين المؤقت للعثور على القيمة الصحيحة. في سياسة ResponseCache، يحدّد أحد الإعدادات المفتاح لكل من التخزين المؤقت والاسترجاع. في سياستي PopulateCache وLookupCache، يجب أن تحتوي كل سياسة على عناصر <CacheKey>متطابقة لضمان تطابق القيمة التي تم استردادها من ذاكرة التخزين المؤقت مع القيمة التي تم وضعها فيها.

يمكن أن يتضمّن العنصر <CacheKey> عناصر <KeyFragment> متعدّدة. في وقت التشغيل، يتم ربط القيم المحدّدة بواسطة عناصر <KeyFragment> بعلامتَي تسطير سفليتين بينها لتشكّل جزءًا من مفتاح ذاكرة التخزين المؤقت.

على سبيل المثال، يؤدي الإعداد التالي إلى إنشاء قيمة hello__world لاستخدامها في مفتاح ذاكرة التخزين المؤقت:

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

يمكنك أيضًا استخدام قيم متغيّرة في مفتاح ذاكرة التخزين المؤقت من خلال الإشارة إلى المتغيّر في عنصر <KeyFragment>، كما هو موضّح هنا:

<KeyFragment ref="variable_name"/>

على سبيل المثال، لجعل قيمة مفتاح ذاكرة التخزين المؤقت تتضمّن Content-Type لرسالة الطلب، عليك اتّباع الخطوات التالية:

<KeyFragment ref="request.header.Content-Type"/>

في الإعداد التالي، يحتوي المتغيّر request.header.Content-Type على القيمة application/json.

<CacheKey>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

هذه النتيجة هي مفتاح ذاكرة تخزين مؤقت ينتهي بـ apiAccessToken__application/json__bar.

للاطّلاع على قائمة بالمتغيرات التي يمكنك استخدامها، يُرجى الرجوع إلى مرجع المتغيرات.

مفاتيح ذاكرة التخزين المؤقت المستندة إلى مَعلمات طلب البحث

باستخدام متغيرات مثل request.queryparam.<queryparam_name> وrequest.querystring، يمكنك ضبط مفتاح ذاكرة التخزين المؤقت بحيث يتضمّن المفتاح أجزاءً من سلسلة طلب البحث. على سبيل المثال، يستخدم عنوان URL التالي مَعلمتَي طلب بحث، وهما param1 وparam2، يمكنك استخدامهما في مفتاح ذاكرة التخزين المؤقت:

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

يمكن أن يتضمّن العنصر <CacheKey> هذه القيم مع إعدادات مثل ما يلي:

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

في وقت التشغيل، سيتضمّن مفتاح ذاكرة التخزين المؤقت قيم المَعلمات التي تم ربطها، كما في المثال التالي:

other_key_parts__value1__value2

ضَع في اعتبارك أنّه عند استخدام المتغيّرات لإدراج قيم من المَعلمات، سيتم ربط القيم بالترتيب الذي يقترحه ترتيب العنصر <KeyFragment>. يُرجى أيضًا ملاحظة أنّ Edge سيستخدم فقط القيم التي تشير إليها تحديدًا باستخدام عناصر <KeyFragment>. إذا كانت قوائم مَعلمات طلب البحث تختلف، لن يتم احتساب الاختلافات في مفتاح ذاكرة التخزين المؤقت.

يمكنك بدلاً من ذلك استخدام المتغير request.querystring الذي يُدرج سلسلة المَعلمات بأكملها كما هي كجزء من مفتاح ذاكرة التخزين المؤقت. يُرجى العِلم أنّه على الرغم من أنّ هذه الطريقة تأخذ في الاعتبار جميع المَعلمات، إلا أنّه إذا اختلف ترتيب المَعلمات من طلب إلى آخر، سيختلف المفتاح. بعبارة أخرى، لا تؤدي param1=value1&param2=value2 وparam2=value2&param1=value1 إلى قيمة مفتاح التخزين المؤقت نفسها.

للاطّلاع على قائمة بالمتغيرات التي يمكنك استخدامها، يُرجى الرجوع إلى مرجع المتغيرات.

استخدام <Scope> و <Prefix>

توفّر العنصران <Scope> و<Prefix> طريقة لإضافة بادئة مساحة اسم إلى المفتاح. يتم إلحاق القيم التي تمثّلها بمفتاح ذاكرة التخزين المؤقت.

يتم استخدام العنصر <Scope> تلقائيًا. وهي عبارة عن تعداد تتراوح قيمه بين عامة وخاصة، وتكون القيمة الخاصة هي القيمة التلقائية. يتم استخدام هذه القيمة التلقائية ما لم تحدِّد قيمة أخرى أو تحدِّد قيمة عنصر <Prefix>. يمكنك إلغاء قيمة <Scope> باستخدام العنصر <Prefix>، وبالتالي تحديد قيمة مخصّصة لتحديد نطاق الاسم.

على سبيل المثال، تمثّل القيمة <Scope> "عام"، وهي النطاق الأوسع، اسم المؤسسة والبيئة. لذا، إذا تم نشر الخادم الوكيل في مؤسسة باسم mycompany وبيئة باسم prod، ستكون القيمة الناتجة التي تم إلحاقها بالبداية كما يلي:

التهيئة النتيجة
<Scope>Global</Scope> mycompany__prod__.

إذا كنت تستخدم النطاق العام مع مفتاح ذاكرة التخزين المؤقت المحدّد أعلاه، ستكون النتيجة كما يلي:

التهيئة النتيجة
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

كما هو موضّح في سياسة LookupCache، يمكن ضبط النطاق لزيادة التحديد من "عام" إلى "حصري". نطاق الوصول الحصري هو الأكثر تحديدًا، وبالتالي يمثّل أقل خطر لحدوث تعارضات في مساحة الاسم ضمن ذاكرة تخزين مؤقت معيّنة. يتم وضع بادئة لكل إدخال في ذاكرة التخزين المؤقت بنطاق Exclusive بالشكل التالي:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

على سبيل المثال، سيبدو مفتاح ذاكرة التخزين المؤقت الذي تم إنشاؤه باستخدام القيمة Exclusive لـ <Scope> على النحو التالي:

apifactory__test__weatherapi__16__default__apiAccessToken