كيف بروكسي HTTP مخابئ تقرر بين تخدم الهوية - مقابلgzip-ترميز الموارد ؟
-
22-08-2019 - |
سؤال
HTTP server يستخدم المحتوى التفاوض لخدمة URL واحد الهوية أو gzip المشفرة على أساس العميل Accept-Encoding
رأس.
الآن يقولون أن لدينا ذاكرة التخزين المؤقت الوكيل مثل الحبار بين العملاء و httpd.
إذا كان الوكيل قد قام بتخزين كل ترميزات عنوان URL ، كيف تحدد ؟
غير gzip سبيل المثال (ليس في الأصل تقدم مع Vary
) يمكن أن تقدم إلى أي عميل ، ولكن المشفرة الحالات (وجود Vary: Accept-Encoding
) لا يمكن إلا أن يتم إرسالها إلى العملاء مع متطابقة Accept-Encoding
قيمة رأس كما كان يستخدم في الطلب الأصلي.
E. g.أوبرا يرسل "deflate, gzip, x-gzip, identity, *;q=0"
ولكن IE8 يرسل "gzip, deflate"
.حسب المواصفات ، ثم مخابئ لا مشاركة المحتوى المشفرة مخابئ بين اثنين من المتصفحات.هل هذا صحيح ؟
المحلول
أولا وقبل كل شيء ، إنه IMHO غير صحيحة عدم إرسال "تختلف:تقبل ترميز" عندما الكيان بل يختلف ذلك رأس (أو غيابها).
أن يقال, المواصفات حاليا في الواقع يسمح تخدم مؤقتا استجابة الأوبرا ، لأن رأس Vary لا يطابق في التعاريف في HTTPbis الجزء 6 القسم 2.6.ربما هذا هو أحد المجالات التي يجب أن الاسترخاء متطلبات مخابئ (قد تحتاج إلى متابعة IETF HTTP القائمة البريدية...
تحديث:اتضح أن هذا هو بالفعل علامة مفتوح السؤال ؛ أنا فقط واضاف في مسألة تعقب ذلك ، نرى مسألة 147.
نصائح أخرى
جوليان هو صحيح بالطبع.الدرس: ترسل دائما Vary: Accept-Encoding
عند استنشاق Accept-Encoding
, بغض النظر عن استجابة الترميز.
للإجابة على سؤالي ، إذا قمت عن طريق الخطأ ترك Vary
، إذا كان الوكيل يتلقى غير ترميز الاستجابة (دون Vary
) ، فإنه يمكن ببساطة ذاكرة التخزين المؤقت والعودة ذلك لكل طلب لاحق (تجاهل Accept-Encoding
). الحبار هل هذا.
مشكلة كبيرة مع ترك تختلف هو أنه إذا كان التخزين المؤقت يتلقى المشفرة البديل دون تختلف ثم قد أرسل هذا استجابة إلى طلبات أخرى حتى لو تحمل ترميز يشير إلى العميل لا يمكن فهم المحتوى.