كيف بروكسي HTTP مخابئ تقرر بين تخدم الهوية - مقابلgzip-ترميز الموارد ؟

StackOverflow https://stackoverflow.com/questions/694918

سؤال

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). الحبار هل هذا.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top