ما هو ضغط GZIP؟
GZIP هو صيغة ضغط ملفات بدون فقد معرّفة في RFC 1952. يغلف الحمولة التي تنتجها خوارزمية DEFLATE (RFC 1951)، التي تجمع بين المراجع الخلفية LZ77 وترميز هافمان لتقليص البيانات المتكررة إلى تيار بايتات مدمج.
كيف يعمل ضغط GZIP؟
تتم معالجة مدخلاتك بالكامل في متصفحك باستخدام واجهة CompressionStream('gzip') الأصلية. الخطوات الرئيسية هي:
- تحوّل الأداة نصك أو ملفك إلى تيار من البايتات (UTF-8 للنص المدخل).
- تمرّ تلك البايتات عبر
CompressionStreamمُهيّأ لصيغةgzip. - يطبّق المتصفح DEFLATE: تمريرة LZ77 بنافذة منزلقة تجد التسلسلات المتكررة، ويعطي ترميز هافمان رموزاً أقصر للرموز الشائعة.
- يُلفّ حول حمولة DEFLATE رأس gzip بطول 10 بايت وذيل بطول 8 بايت (CRC32 للبيانات الأصلية بالإضافة إلى الطول الأصلي بالمعامل 2^32)، مما ينتج حاوية .gz قياسية.
- تُعرض النتيجة كـ Base64 أو بصيغة سداسية عشرية للمدخلات النصية، أو تُقدَّم كملف .gz قابل للتنزيل للمدخلات الثنائية.
لماذا نضغط باستخدام GZIP؟
- حمولات أصغر: تنكمش النصوص وJSON وHTML وCSS وشيفرة المصدر عادة إلى جزء صغير من حجمها الأصلي.
- معيار صناعي: يفهم GZIP تقريباً كل خادم HTTP وCDN ومتصفح وأداة أرشفة ومكتبة قياسية للغات البرمجة.
- الخصوصية: يحدث الضغط بالكامل في متصفحك. لا تصل المدخلات إلى خوادمنا أبداً.
- جاهز للذهاب والإياب: تُفك ضغط النواتج عبر سطر أوامر
gunzip، ومع رأس HTTPContent-Encoding: gzip، ومع أي قارئ RFC 1952 في Python وNode.js وGo وJava أو Rust.
ما هي التطبيقات الشائعة لضغط GZIP؟
يُستخدم GZIP في جميع أنحاء الويب وأدوات سطر الأوامر:
- نقل HTTP: تضغط خوادم الويب الاستجابات باستخدام GZIP لتحميل الصفحات بسرعة أكبر عبر الشبكة.
- أرشفة السجلات: تُخزَّن سجلات الخادم طويلة الأمد كملفات .gz لتقليل استخدام القرص.
- النسخ الاحتياطية والحزم: تضغط ملفات tar (.tar.gz) شجرة الدلائل كاملة لتوزيعها بسهولة.
كيف يبدو مثال على ضغط GZIP؟
وثيقة JSON بحجم 1 كيلوبايت بها أسماء حقول متكررة كثيرة تُضغط عادة إلى ما بين 200 و300 بايت — تقليص الحجم بمقدار أربعة إلى خمسة أضعاف. غالباً ما تُضغط سجلات النصوص الكبيرة بنسبة 90% أو أكثر. لن تتقلص المدخلات المضغوطة مسبقاً (JPEG، PNG، MP4، ZIP) أكثر، وقد تنمو ببضع بايتات بسبب تأطير GZIP.
ينتج هذا الضاغط GZIP مخرجات RFC 1952 القياسية مباشرة في متصفحك. سواء كنت تقلّص حمولة قبل إرسالها أو تنتج ملف .gz للأرشفة، فإن النتيجة تتوافق مع كل أداة تدعم GZIP على الشبكة.