سؤال

لديّ خادم ويب مضمن يحتوي على مساحة 2 ميج. عادةً ما تستفيد ملفات GZIP الخاصة بـ GZIP ، ولكن هذا سيوفر لنا مساحة على الخادم. قرأت أنه يمكنك فقط gzip ملف JS وحفظه على الخادم. لقد اختبرت ذلك على IIS ولم يكن لدي أي حظ على الإطلاق. ما الذي يجب أن أفعله بالضبط في كل خطوة من العملية لجعل هذا العمل؟

هذا ما أتصور أنه سيكون مثل:

  1. gzip foo.js
  2. تغيير الرابط في HTML للإشارة إلى foo.js.gz بدلاً من فقط .js
  3. إضافة نوع من الرأس إلى الاستجابة؟

شكرا لأية مساعدة على الإطلاق.

-fre

تعديل: لا يمكن لخادم الويب الخاص بي فعل أي شيء أثناء الطيران. إنه ليس apache أو iis ؛ إنه ثنائي على معالج Zilog. أعلم أنه يمكنك ضغط التدفقات ؛ سمعت للتو أنه يمكنك أيضًا ضغط الملفات مرة واحدة وتركها مضغوطة.

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

المحلول

كما ذكر الآخرون mod_deflate يفعل ذلك من أجلك ، لكنني أعتقد أنك بحاجة إلى القيام بذلك يدويًا لأنها بيئة مضمنة.

بادئ ذي بدء ، يجب أن تترك اسم الملف foo.js بعد ذلك.

يجب ألا تغير أي شيء في ملفات HTML الخاصة بك. لأن الملف لا يزال foo.js

في رأس الاستجابة (gzipped) foo.js ترسل الرأس

Content-Encoding: gzip

هذا ينبغي أن تفعل خدعة. يسأل العميل عن foo.js ويتلقى ترميز المحتوى: GZIP متبوعًا بملف Gzipped ، والذي يضعه تلقائيًا قبل التحليل.

بالطبع هذا يفترض أنك متأكد من أن العميل يفهم ترميز GZIP ، إذا لم تكن متأكدًا ، يجب عليك فقط إرسال بيانات Gzipped عندما يحتوي رأس الطلب على

Accept-Encoding: gzip

نصائح أخرى

عادةً ما يعني استخدام ضغط GZIP على خادم الويب ضغط الإخراج منه للحفاظ على عرض النطاق الترددي الخاص بك - وليس تمامًا ما يدور في ذهنك.

انظر إلى هذا الوصفأوهذا المثال

إذا كنت تستخدم Apache ، فأنت تستخدم mod_deflate, ، وهو يضغط على الطيران.

أعتقد أنك تشعر بالارتباك من خلال التفكير في أنه إذا كنت gzip شيء يجب أن يكون ملفًا. بدلاً من ذلك ، فكر في كيف أن الملف هو مجرد دفق من البيانات ، ويمكن أن يتم ضغط دفق البيانات هنا ، ونقله ، وغير مضغوط هناك دون أن يضطر العميل حتى إلى التفكير في الأمر.

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