دعم رؤوس استجابة HTTP

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

يوضّح هذا الموضوع طريقة تعامل Edge مع عناوين التخزين المؤقت لبروتوكول HTTP/1.1 عند استخدام سياسة ResponseCache. يتوافق Apigee Edge حاليًا مع مجموعة فرعية من رؤوس وأوامر التخزين المؤقت HTTP/1.1 (الميزات غير المتوافقة مُدرَجة في هذا الموضوع) التي تم تلقّيها من خوادم الهدف (المصدر) في الخلفية.

بالإضافة إلى ذلك، يتخذ Edge بعض الإجراءات بناءً على توجيهاته. وفي بعض الحالات، تلغي عناوين ذاكرة التخزين المؤقت HTTP/1.1 هذه أي سلوك يتم تحديده في سياسة ResponseCache. على سبيل المثال، إذا تم عرض عنوان Cache-Control من خادم خلفية، يمكنك ضبط توجيه s-maxage الخاص بالعنوان على إمكانية إلغاء إعدادات انتهاء الصلاحية الأخرى في السياسة.

العنوان الدعم
التحكُّم في ذاكرة التخزين المؤقت يتوفّر هذا الخيار مع الاستجابات التي يتم عرضها من خوادم المصدر في الخلفية، ولكن ليس لطلبات العميل. يدعم Edge مجموعة فرعية من التوجيهات.
تاريخ انتهاء الصلاحية متاح. يمكن تجاوزه.
علامات الكيانات (ETags) السلوك المحدّد للمَعلمتَين If-Match وIf-None-Match:
في حال التعديل منذ في طلبات GET، يتم تمرير العنوان إلى خادم المصدر حتى في حال توفُّر إدخال صالح لذاكرة التخزين المؤقت.
قبول الترميز يرسل Edge إما استجابات مضغوطة أو غير مضغوطة بناءً على العناوين الواردة.

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

يتوافق Apigee Edge مع عنوان Cache-Control فقط في الاستجابات المعروضة من خوادم المصدر في الخلفية (تسمح مواصفات HTTP/1.1 بعناوين Cache-Control في كل من طلبات العميل واستجابات خادم المصدر). ويمكن أن تتضمّن خوادم المصدر كلاً من نقاط النهاية المستهدَفة المحدّدة في الخادم الوكيل لواجهة برمجة التطبيقات Apigee Edge وتلك التي تم إنشاؤها باستخدام طلبات البيانات من واجهة برمجة تطبيقات TargetServer.

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

يتوافق Apigee Edge مع مجموعة فرعية من إمكانيات عناوين الاستجابة Cache-Control المحدّدة في مواصفات HTTP/1.1. ملاحظات:

  • لا يتوافق Apigee Edge مع عناوين Cache-Control التي تصل مع طلبات العميل الواردة.
  • لا يتوافق Apigee Edge سوى مع مفهوم ذاكرات التخزين المؤقت العامة. (وفقًا لمواصفات HTTP، يمكن أن تكون السمة Cache-Control علنية (مشتركة) أو خاصة (لمستخدم واحد).
  • يتوافق Apigee Edge فقط مع مجموعة فرعية من توجيهات استجابة Cache-Control في مواصفات HTTP/1.1. يمكنك الاطّلاع على دعم توجيهات عناوين الاستجابة للتحكّم في ذاكرة التخزين المؤقت لمعرفة التفاصيل.

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

يتوافق Apigee مع توجيهات فرعية من مواصفات HTTP/1.1 بشأن الاستجابات من خوادم المصدر. يوضِّح الجدول التالي دعم Apigee Edge لتوجيهات عنوان استجابة HTTP Cache-Control.

للحصول على معلومات أكثر تفصيلاً حول التوجيهات المذكورة هنا، يمكنك الاطّلاع على عنصر التحكم في ذاكرة التخزين المؤقت في مواصفات HTTP/1.1.

التوجيه Cache-Control كيفية معالجة Apigee Edge للتوجيه
cache-extension غير متاح.
max-age

إذا ضبطت سياسة Response Cache العنصر <UseResponseCacheHeaders> على true، يمكن تخزين الاستجابة مؤقتًا لعدد الثواني المحدد في هذا التوجيه.

يتم إلغاء هذا التوجيه من خلال التوجيه s-maxage ويتم إلغاء عنوان Expires. ويمكن أيضًا إلغاء هذا العنصر من خلال عنصر <ExpirySettings> للسياسة. لمزيد من المعلومات، يمكنك الاطّلاع على "ضبط تاريخ انتهاء صلاحية إدخال ذاكرة التخزين المؤقت" و<UseResponseCacheHeaders> في سياسة ذاكرة التخزين المؤقت للاستجابة.

must-revalidate غير متاح. وتحذف Apigee Edge جميع إدخالات ذاكرة التخزين المؤقت فور انتهاء صلاحيتها.
no-cache

يخزن Edge استجابة المصدر مؤقتًا، ولكن يجب إعادة التحقق منها باستخدام خادم المصدر قبل استخدامها لتلبية أي طلبات عميل لاحقة. تسمح هذه القاعدة للأصل بعرض الاستجابة 304 "لم يتم التعديل" للإشارة إلى أنّه يجب عرض الاستجابة من ذاكرة التخزين المؤقت، وبالتالي حفظ عملية المعالجة المطلوبة لعرض الاستجابة بالكامل. إذا عرض خادم المصدر استجابة كاملة، سيحل محل إدخال ذاكرة التخزين المؤقت الحالي. ويتم تجاهل أي أسماء حقول محدّدة مع هذا التوجيه.

no-store غير متاح.
no-transform غير متاح.
private غير متاح. إذا تم تلقّي هذا التوجيه، لن يتم التخزين المؤقت لاستجابة المصدر. ويتم تجاهل أي أسماء حقول.
proxy-revalidate غير متاح. وتحذف Apigee Edge جميع إدخالات ذاكرة التخزين المؤقت فور انتهاء صلاحيتها.
public يخزِّن Edge استجابة المصدر في ذاكرة التخزين المؤقت، حتى عندما تشير توجيهات أخرى إلى خلاف ذلك. وفقًا لمواصفات HTTP/1.1، يكون الاستثناء الوحيد لهذه القاعدة هو أنّ الاستجابة تتضمّن عنوان تفويض.
s-maxage

إذا ضبطت سياسة Response Cache العنصر <UseResponseCacheHeaders> على true، يمكن تخزين الاستجابة مؤقتًا لعدد الثواني المحدد في هذا التوجيه.

يلغي هذا التوجيه توجيه max-age وعنوان Expires. ويمكن إلغاء هذا العنصر من خلال عنصر <ExpirySettings> للسياسة. لمزيد من المعلومات، يمكنك الاطّلاع على "ضبط تاريخ انتهاء صلاحية إدخال ذاكرة التخزين المؤقت" و<UseResponseCacheHeaders> في سياسة ذاكرة التخزين المؤقت للاستجابة.

تاريخ انتهاء الصلاحية

عند ضبط علامة UseResponseCacheHeaders في سياسة ResponseCache على true، يستطيع متصفّح Edge استخدام العنوان Expires لتحديد مدة بقاء إدخال ذاكرة التخزين المؤقت (TTL). يحدِّد هذا العنوان تاريخًا/وقتًا يتم بعد ذلك اعتبار إدخال ذاكرة التخزين المؤقت للاستجابة قديمًا. يتيح هذا العنوان للخوادم إرسال إشارة عندما يكون من المقبول عرض قيمة مخزّنة مؤقتًا استنادًا إلى طابع زمني.

يمكن وصف تنسيقات التاريخ المقبولة لعنوان Expires في مواصفات HTTP/1.1. مثال:

تنتهي الصلاحية في: الخميس 1 كانون الأول (ديسمبر) 1994، الساعة 16:00:00 بتوقيت غرينيتش

للحصول على معلومات مفصّلة حول تنسيقات الوقت/التاريخ HTTP، يمكنك مراجعة تنسيقات التاريخ/الوقت في مواصفات HTTP/1.1.

للحصول على مزيد من المعلومات حول عنوان Expires، راجِع تعريفات حقل العنوان في مواصفات HTTP/1.1.

ETag

علامة الكيان (ETag) هي معرّف مرتبط بمورد مطلوب. باستخدام ETag، يمكن للخادم تحديد ما إذا كان المورد المطلوب والمورد المخزن مؤقتًا المرتبط به متطابقين. على سبيل المثال، يمكن للخادم إعادة تخزين الاستجابة مؤقتًا إذا لم تتطابق مع المحتوى المُخزَّن حاليًا في ذاكرة التخزين المؤقت. وبإمكانه عرض المورد المخزن مؤقتًا في حال تطابق علامات ETag.

عندما ترسل نقطة نهاية مستهدَفة استجابة إلى Edge باستخدام علامة ETag، يخزّن Edge ETag مؤقتًا مع الاستجابة.

يمكنك الاطّلاع على مزيد من المعلومات عن علامات الكيانات في معلَمات البروتوكول في مواصفات HTTP/1.1.

شرط المطابقة

من خلال عنوان الطلب If-Match، يكون الكيان المخزَّن مؤقتًا كما هو إذا كان علامة ETag في العنوان يتطابق مع علامة ETag المخزّنة مؤقتًا. يتم تمرير أي طلبات أخرى غير GET والتي تحدّد عنوان If-Match إلى خادم المصدر لضمان إمكانية معالجة الطلب لأي من مرافق التخزين المؤقت للمصدر.

يمكنك الاطّلاع على مزيد من المعلومات حول If-Match في تعريفات حقل العنوان في مواصفات HTTP/1.1.

إذا تلقّى متصفّح Edge طلب GET وارد من برنامج يتضمن عنوان If-Match:

إذا بعد ذلك
يحدِّد عنوان If-Match علامة ETag واحدة أو أكثر.
  1. يسترد Apigee Edge أي إدخالات في ذاكرة التخزين المؤقت غير منتهية الصلاحية للمورد المحدّد ويقارن أي علامات ETag قوية على تلك الإدخالات المخزنة مؤقتًا مع الإدخالات المحددة في عنوان If-Match.
  2. وفي حال العثور على تطابق، يتم عرض إدخال ذاكرة التخزين المؤقت.
  3. وإذا لم يكن الأمر كذلك، يتم تمرير الطلب إلى خادم المصدر.
يحدِّد عنوان If-Match "*". يتم تمرير الطلب إلى خادم المصدر للتأكّد من إمكانية معالجة الطلب لأي من مرافق التخزين المؤقت للمصدر.
تم العثور على إدخال ذاكرة تخزين مؤقت له عنوان URI للطلب نفسه، ولكنه يحتوي فقط على علامات ETag الضعيفة يجب إعادة التحقق من صحة الإدخال من خلال خادم المصدر قبل إرجاعه إلى العميل.
تأتي علامات ETag من خادم المصدر. يتم عرض علامة ETag بدون تغيير للعميل.

في حال عدم التطابق

باستخدام العنوان If-None-Match، يكون العنصر المخزَّن مؤقتًا كما هو حاليًا إذا كان علامة ETag في العنوان لا يتطابق مع علامة ETag المخزّنة مؤقتًا. ويتم تمرير الطلبات إلى خادم المصدر باستثناء طلبات GET التي تحتوي على هذا العنوان.

إذا كان Edge يتلقى طلب GET واردًا مع هذا العنوان:

إذا بعد ذلك
يحدِّد عنوان If-None-Match علامة ETag واحدة أو أكثر.
  1. يسترد Apigee Edge أي إدخالات ذاكرة تخزين مؤقت غير منتهية الصلاحية لمعرّف الموارد المنتظم (URI) المحدد ويقارن أي علامات ETag قوية على تلك الإدخالات المخزنة مؤقتًا مع الإدخالات المحددة في عنوان If-None-Match.
  2. إذا تم العثور على تطابق، سيعرض Edge الحالة 304 "لم يتم التعديل". وفي حال عدم العثور على أي نتائج مطابِقة، يمرِّر Edge الطلب إلى خادم المصدر.

يحدّد عنوان If-None-Match "*" ويتوفر إدخال مخزّن مؤقتًا لم تنته صلاحيته لمعرّف الموارد المنتظم (URI) المطلوب

عرض Edge بالحالة "304" Not Modified (لم يتم التعديل)
تم العثور على إدخال ذاكرة تخزين مؤقت له عنوان URI للطلب نفسه ولكنه لا يحتوي إلا على علامات ETag الضعيفة فقط. يجب إعادة التحقق من صحة الإدخال من خلال خادم المصدر قبل أن يقوم Edge بعرضه إلى العميل.
تتلقّى Edge علامة ETag من خادم المصدر يتم عرض علامة ETag بدون تغيير للعميل.

إذا تم تعديلها منذ

إذا تلقّت Apigee Edge عنوان If-Modified-Since في طلب GET، يتم تمريرها إلى خادم المصدر حتى في حال توفّر إدخال ذاكرة تخزين مؤقت صالح.

ويضمن ذلك احتساب أي تعديلات على مورد لم يمر عبر Apigee Edge. إذا عرض خادم المصدر كيانًا جديدًا، سيستبدل Edge إدخال ذاكرة التخزين المؤقت الحالي بالقيمة الجديدة. إذا كان الخادم يعرض الحالة 304 "Not Modified" (لم يتم تعديلها)، يعرض Edge قيمة الاستجابة إذا كان عنوان Last-Modified للاستجابة المخزّنة مؤقتًا يشير إلى عدم تغيّرها.

قبول-الترميز

عندما يتضمّن طلب وارد العنوان Accept-Encoding بقيم gzip أو deflate أو compress، يستجيب خادم المصدر بالبيانات المضغوطة. عندما تأتي الطلبات اللاحقة بدون عناوين Accept-Encoding، فإنّها تتوقّع استجابة غير مضغوطة. يمكن لآلية التخزين المؤقت لاستجابة Apigee إرسال ردود مضغوطة وغير مضغوطة استنادًا إلى العناوين الواردة بدون الرجوع إلى خادم المصدر.

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