سؤال

ومن وظيفة في وقت سابق عن محاولة لتحسين أدائي مواقع لقد كنت تبحث في ضغط HTTP. لقد قرأت عن إعداد عليه في IIS ولكن يبدو أن شيئا العالمي لجميع تجمعات التطبيقات IIS قد لا يسمح لي للقيام بذلك كما أن هناك موقع آخر يعمل على أنها كذلك. ثم رأيت بعض التعليمات البرمجية لوضع global.asax لتحقيق نفس الشيء على أساس لكل موقع.

انظر هنا <لأ href = "HTTP: //www.stardeveloper.com/articles/display.html؟article=2007110401&page=1] "يختلط =" noreferrer نوفولو "> http://www.stardeveloper.com/articles/display.html؟article=2007110401&page=1] 1

وهذا هو جيدة مثل الإعداد في IIS؟ كيف دراماتيكية هو تأثير؟ أية مشكلات معروفة؟

هل كانت مفيدة؟

المحلول

إذا كنت المضي قدما مع هذا، أود أن اقترح تنفيذ HttpModule مقابل global.asax. وHttpModule يسمح لك لتعطيل ضغط مع تغيير التكوين مقابل إعادة بناء ويسمح لك لقرد مع الجمعية ضغط الخاص بك فصل من تطبيق الويب.

وغني كرين على وحدة 2.0 لطيفة جدا هنا: http://www.codeplex.com/httpcompression/ إذا كنت ترغب في الحصول على وتشغيلها بسرعة.

blowery المشروع المذكور ستيفن روجرز هو HttpModule كذلك.

وعلى خلاف ذلك، الكتابة الخاصة بك غير واضحة إلى حد ما. A HttpModule يمنحك نفس الأحداث كما global.asax - BeginRequest، EndRequest، وأكثر دقة الحبيبات الأحداث مثل PostReleaseRequestState وPreSendRequestHeaders التي قد تحتاج إلى تسوية جميع التجاعيد

وبقدر ما IIS ضغط حقيقية وحيدة HttpModule، IIS هو بالتأكيد أسهل وبما انك لا داعي للضجة معه حتى الآن الجمعية أخرى. لقد استخدمت كل الأساليب مع تطبيقات الأعمال على حد سواء أداء بالتساوي تقريبا تحت اختبار الحمل. إذا IIS هو متاح، وانا اقول استخدامها.

وبين 60 و ضغط لHTML 80٪، JS، CSS، وملفات XML هي مشتركة مع غزيب. نضع في اعتبارنا الكثير من الحمولة الخاصة بك قد تكون الصور والكائنات الوسائط المتعددة التي هي أصعب بكثير لضغط.

نصائح أخرى

http://blowery.org/httpcompress/

لقد استخدمت هذه أداة ضغط في وظيفتي لبعض الوقت. جميلة جيدة.

وأعتقد أن الخيار Global.asax تكون جيدة إذا كنت في بيئة استضافة مشتركة على سبيل المثال، حيث لم يكن لديك الوصول إلى تكوين IIS.

وIIS 6 يوفر الدعم ضغط الأساسي، ولكن إذا كنت بالفعل في IIS 7، فإنه يوفر لك عظيم <وأ href = "http://blogs.iis.net/ksingla/archive/2006/06/13/changes -to-ضغط في iis7.aspx "يختلط =" نوفولو noreferrer "> HTTP الدعم ضغط ، يمكنك تحديد الملفات التي تحصل مضغوط على أساس نوع MIME في ملفات التكوين الخاصة بك ...

وويحقق أساسا نفس الشيء ضغط IIS - على حد سواء في نهاية المطاف إرسال الاستجابة مع ضغط GZIP. لقد نفذت مؤخرا هذا الأسلوب، وأنه يقلل باستمرار حجم الاستجابة بنسبة 60٪ مع عدم وجود تأثير الأداء يستحق القلق حول.

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

وثانيا، سوف GZipStream اقتطاع أحيانا الأحرف القليلة الماضية من الاستجابة إذا كنت تستخدم Response.End أو Response.Flush، لأنه لم يتم إغلاق مجرى إلا بعد فوات الأوان. أنا لست على علم بأي حل لطيف لذلك.

وأخيرا، وهذا سوف ضغط فقط HTML الخاص بك. سيتم تقديم أي CSS أو ملفات جافا سكريبت بشكل طبيعي. كنت بحاجة إلى ذلك، على سبيل المثال، تكون تلك الملفات عن طريق العرف IHttpHandler إلى ضغط عليها.

وهناك قضايا مع JavaScript و VBScript. وقد أكدت هذه المشكلة الجافا سكربت في تصريحات لxxldaniel على codinghorror المقالة ، وكان لي مشاكل مع VBScript (لأتمتة M مكتب $) باستخدام JSON مثل "Scripting.Dictionary" مع طلب "Microsoft.XMLHTTP".

يمكنك محاولة mod_gzip الوحدات. ويستخدم تمكن النسخة ZLIB ويسمح التكوين قابل للتعديل للغاية. بناء الجملة متوافق مع نفس الوحدة النمطية أباتشي اسمه وحتى تمديد. هكذا على سبيل المثال يمكنك تعيين مستوى ضغط مختلفة لأنواع مختلفة التمثيل الصامت وهلم جرا.

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