Apache HTTPD / التمثيل والوكالة والسعة / الدرس 11
مرشحات الضغط ونطاق ترويسات الرد
راجع التمثيل والتفاوض وVary وجداول الترويسات كعقد رد.
في هذه الصفحة
أهداف الدرس
- تمييز أهلية الضغط وتفاوض العميل الفعلي.
- شرح نطاق الترويسة ومراجعة التكرار.
قد يتحول الرد بعد المعالج
تغير المرشحات رد ملف أو تطبيق. يقلل الضغط بايتات النقل مقابل المعالج أحياناً. قد يناسب نص Parcel وJSON ولا يماثل وسيطاً مضغوطاً أو رداً حساساً عاكساً. ليس تحسيناً عاماً. راجع النوع والحجم والعميل والذاكرة والدليل قبل السياسة. لا تضغط الدورة محتوى حياً أو تولد مروراً. يجب أن تقارن فائدة النقل بكلفة المعالجة وبصحة تمثيل كل مستهلك، لا أن تعلن أن حجم أصغر وحده يعني خدمة أسرع أو أكثر أماناً في كل مسار.
اقرأ المتطلبات والنطاق
يختار المقطع DEFLATE حسب النوع ويضيف وصفاً افتراضياً، ويفترض الوحدات والنوع ولا يحمل أو يولد رداً. الترويسة بيانات تعليم لا أمن أو سياسة ذاكرة كاملة. قد يغير النوع الاختيار وتتداخل الخلفية والموروث. راجع السياق والترتيب لا المقطع كوصفة تثبيت. لا يثبت إعلان اسم المرشح أنه موجود في البناء أو أن التطبيق يرسل نوع المحتوى الذي تتوقعه القاعدة، لذلك يجب أن تبقى هذه المتطلبات جزءاً من مراجعة أي تجربة تشغيل مصرح بها لاحقاً.
AddOutputFilterByType DEFLATE text/html text/plain application/json
Header set X-Parcel-Representation "lab"
الوحدات والمحتوى افتراضات غائبة. لا يقاس ضغط أو متصفح أو ذاكرة أو ترويسة أو نتيجة خادم.
تحتاج البدائل عقد ذاكرة
يتبع الضغط تفاوض Accept-Encoding وسلوك الوحدة. تعالج الوحدة معلومات Vary المناسبة وفق المرجع، وتحتاج الاختلافات والوسطاء مراجعة أيضاً. لا تقدم المضغوط لمن لم يقبله ولا تفرض طولاً ثابتاً بعد التحويل. يجب أن تصف المفاتيح والمدققات التمثيل. قد يعقد المزيد أو تكرار Vary الفهم. ليس كافياً أن يفتح متصفح واحد الصفحة؛ يجب أن يكون اختيار النسخة صحيحاً عند عبور مخبأ مشترك يتلقى عملاء مختلفين وفي ردود قد تأتي من الخلفية أو معالجة خطأ.
تؤثر الجداول والشروط في النهائي
تدعم الوحدة توقيتاً وجدولي onsuccess وalways. قد يكرر المصدر الخلفي أو وحدة أخرى الاسم أو يغير النتيجة. راجع العمليات set وadd وappend وmerge وunset حسب القصد لا حتى يبدو متصفح واحد صحيحاً. قد يختلف الخطأ والتحويل. لا تثبت علامة تشخيص وصولاً أو خصوصية أو ذاكرة، ولا تناسب قائمة أمن واحدة كل تطبيق. ينبغي أن يحدد المراجع مصدر كل قيمة متوقعة وكيف ستتصرف عند وجود قيمة مسبقة، لا مجرد اختيار فعل يحمل اسماً قريباً من النتيجة المرغوبة.
قيّم قاعدة أهلية معلنة فقط
يختار البرنامج gzip لنوع مؤهل وقدرة معلنة، ولا يحلل ترويسة أو q أو wildcard أو ترتيباً أو ضغطاً. يوضح استقلال النوع والعميل. تحتاج الحقيقة البايتات والترويسات وكل الوسطاء بمسار مصرح. احفظ حالات سلبية حتى لا يضعف التحسين الصحة. لا تعني مجموعة accepted أن العميل أرسل طلباً فعلياً أو أن قيمة q الخاصة بالترميز موجبة؛ هي مدخلات مقيدة للنموذج ولا يجوز تقديمها كبديل عن قواعد تفاوض HTTP المدعومة في الخادم والوسطاء.
eligible_types = {"text/html", "application/json"}
def representation(content_type, accepted):
return "gzip" if content_type in eligible_types and "gzip" in accepted else "identity"
print(representation("application/json", {"gzip"}))
print(representation("application/json", set()))
print(representation("image/png", {"gzip"}))
gzip
identity
identity
يقيم نصوصاً ومجموعات ولا يضغط أو يحلل HTTP أو يستدعي خادماً أو يقيس أداء.
الأخطاء الشائعة وإصلاحها
يُضغط كل رد كتحسين عام.
- لماذا يحدث؟
- أُهملت الكلفة والمحتوى والعميل والانعكاس الحساس.
- كيف تصلحه؟
- اختر سياسة محدودة وافحصها للتطبيق.
- كيف تتجنب تكراره؟
- قس النقل والمعالجة والصحة معاً.
تُخزن النسخة دون تمييز التفاوض.
- لماذا يحدث؟
- غاب اختلاف التمثيل من العقد.
- كيف تصلحه؟
- راجع Vary والمفتاح بكل وسيط.
- كيف تتجنب تكراره؟
- اختبر قدرات عميل مختلفة.
تتكرر الترويسة بين جداول ومصادر.
- لماذا يحدث؟
- لم يراجع النطاق والخلفية.
- كيف تصلحه؟
- تتبع المصدر واختر العملية والجدول.
- كيف تتجنب تكراره؟
- ضمّن الخطأ والتحويل في التحقق.
اختبر فهمك
1. هل يضمن نوع JSON المؤهل gzip لكل عميل؟
اعرض الحل المشروح
لا. يهم التفاوض والسياسة. يشترط النموذج قدرة معلنة ولا يحلل كل ترويسة. تحقق من العميل والمخبأ والمسار بممارسة مصرح بها.
2. لماذا لا تفرض Content-Length ثابتاً بعد الضغط؟
اعرض الحل المشروح
قد يتغير طول الجسم باختلاف التمثيل والرد. يفسد الخطأ التأطير والتسليم. اترك عقد المعالجة المدعوم يديره ولا تختلق قيمة ثابتة.
أهم ما تعلمته
- يجمع العقد الضغط والتفاوض والذاكرة والترويسات.
- لا يثبت نموذج الأهلية سلوك رد أو أداء.