Developer Toolbox

gzip (DEFLATE)

شاهد كيف يصغّر gzip النص: تتحول التكرارات إلى نسخ قصيرة، وتمنح رموز Huffman العناصر الشائعة عددًا أقل من البتات.

  • النافذة: 32 كيلوبايت
  • النسخ: 3-258 بايت
  • الرموز: حتى 15 بت
  • إطار gzip: 18 بايت
ماذا تعني هذه المصطلحات؟
  • القيمة الحرفية: حرف يُكتب كما هو، لأنه لا يبدأ عند موضعه أي تكرار من 3 أحرف أو أكثر.
  • النسخة: طول ومسافة يعنيان "خذ هذا العدد من الأحرف من هذا البعد إلى الوراء". ويمكن أن تتداخل مع النص الذي تنتجه.
  • النافذة: إلى أي مدى يمكن للضاغط أن يرجع بحثًا عن تكرار. 32 كيلوبايت في gzip، وحتى 16 ميغابايت في Brotli.
  • رمز Huffman: سلسلة بتات لكل عنصر، أقصر للعناصر الشائعة، تُبنى من شجرة تدمج أندر عنصرين مرة بعد مرة.
  • خالٍ من البادئات: لا يكون أي رمز بداية لرمز آخر، لذا يمكن قراءة سلسلة الرموز من جديد دون فواصل.
LZ77 وHuffman خطوة بخطوة 0 / 19 خطوة

عدد أحرف النص: 23، وحجمه دون ضغط: 184 بت. يقرؤه الضاغط من اليسار إلى اليمين، ويسأل عند كل موضع هل ظهر ما يليه من قبل.

مفتاح المسافة: تشغيل أو إيقاف مؤقت. السهمان الأيسر والأيمن: خطوة بخطوة. Home وEnd: الانتقال المباشر.

جرّب هذا: اكتب الحرف نفسه مرات كثيرة. نسخة واحدة بمسافة 1 تغطيها كلها، لأن النسخة يمكن أن تتداخل مع النص الذي تنتجه.

كيف يعمل

يشغّل gzip خوارزمية DEFLATE على مرحلتين. تمر LZ77 على النص وتبحث عند كل موضع عن أطول سلسلة بايتات ظهرت من قبل في آخر 32 كيلوبايت؛ وبدل تكرارها تكتب زوجًا: كم بايتًا يُنسخ (3-258) وكم يبعد إلى الوراء. ثم يُكتب كل ما تبقى، أي القيم الحرفية وتلك الأزواج، برموز Huffman، فتحصل العناصر الشائعة على رموز قصيرة والنادرة على رموز طويلة. ويغلّف gzip الناتج برأس من 10 بايتات وتذييل من 8 بايتات فيه مجموع تحقق CRC-32.

متى يكون خيارًا جيدًا

يضغط gzip النص الذي يكرر نفسه: HTML وCSS وJavaScript وJSON والسجلات وCSV. يفهمه كل متصفح وكل خادم، وهو سريع في كل المستويات، والخيار الافتراضي الآمن لضغط الاستجابات أثناء إرسالها. أما البيانات المضغوطة أصلًا، مثل JPEG وPNG وWOFF2 وZIP، فلم يبق فيها تكرار، لذا لا يضيف gzip إلا إطاره.

على نصك أنت

المرحلتان نفسهما، ينفذهما gzip الحقيقي (المستوى 6) على نص أطول. الصق نصك، أو أحضر نصًا من أداة ضغط Gzip وBrotli.

إدخال