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

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

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

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

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

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

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

النطاق | prefix__keysegment[__keysegment]

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

استخدام <CacheKey>

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

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

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

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

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

<KeyFragment ref="variable_name"/>

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

<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، يمكن ضبط النطاق لزيادة مستوى الخصوصية من "شامل" إلى "حصري". النطاق الحصري هو الأكثر تحديدًا، وبالتالي يمثّل الحد الأدنى من خطر التضارب في مساحة الاسم ضمن ذاكرة تخزين مؤقت معيّنة. يكون كل إدخال لذاكرة التخزين المؤقت ذات النطاق الحصري مسبوقًا بالشكل التالي:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

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

apifactory__test__weatherapi__16__default__apiAccessToken