فشردهسازی GZIP چیست؟
GZIP یک فرمت فایل فشردهسازی بدون اتلاف است که توسط RFC 1952 تعریف شده. این فرمت یک payload تولیدشده توسط الگوریتم DEFLATE (RFC 1951) را میپوشاند که از مرجعهای برگشتی LZ77 و رمزگذاری هافمن برای فشردهسازی دادههای تکراری در یک جریان بایت فشرده استفاده میکند.
فشردهسازی GZIP چگونه کار میکند؟
ورودی شما کاملاً در مرورگر شما با استفاده از API بومی CompressionStream('gzip') پردازش میشود. مراحل اصلی عبارتند از:
- ابزار متن یا فایل شما را به جریانی از بایتها تبدیل میکند (UTF-8 برای ورودی متنی).
- آن بایتها از طریق یک
CompressionStreamپیکربندیشده برای فرمتgzipعبور داده میشوند. - مرورگر DEFLATE را اعمال میکند: یک پاس LZ77 با پنجره کشویی دنبالههای تکراری را مییابد و رمزگذاری هافمن کدهای کوتاهتری به نمادهای رایج اختصاص میدهد.
- یک هدر gzip 10 بایتی و یک footer 8 بایتی (CRC32 دادههای اصلی و طول اصلی) دور payload DEFLATE قرار میگیرند و یک container استاندارد .gz تولید میشود.
- نتیجه برای ورودی متنی به صورت Base64 یا hex ارائه میشود، یا برای ورودی باینری به عنوان یک فایل .gz قابل دانلود عرضه میشود.
چرا با GZIP فشرده کنیم؟
- payload های کوچکتر: متن، JSON، HTML، CSS و کد منبع معمولاً به کسری از اندازه اصلی خود کوچک میشوند.
- استاندارد صنعتی: GZIP توسط تقریباً هر سرور HTTP، CDN، مرورگر، ابزار آرشیو و کتابخانه استاندارد زبان برنامهنویسی قابل درک است.
- حریم خصوصی: فشردهسازی کاملاً در مرورگر شما انجام میشود. ورودی هرگز به سرورهای ما نمیرسد.
- آماده برای رفتوبرگشت: خروجی با
gunzipCLI، با HTTPContent-Encoding: gzipو با هر خواننده RFC 1952 در Python، Node.js، Go، Java یا Rust رفع فشردهسازی میشود.
کاربردهای رایج فشردهسازی GZIP چیست؟
GZIP در سراسر وب و در ابزارهای خط فرمان استفاده میشود:
- انتقال HTTP: سرورهای وب پاسخها را با GZIP فشرده میکنند تا صفحات از طریق شبکه سریعتر بارگذاری شوند.
- آرشیو لاگ: لاگهای طولانیمدت سرور به عنوان فایلهای .gz ذخیره میشوند تا مصرف دیسک کاهش یابد.
- پشتیبانگیری و بستهها: tarball ها (.tar.gz) کل درختان دایرکتوری را برای توزیع قابل حمل فشرده میکنند.
مثال فشردهسازی GZIP چگونه است؟
یک سند JSON 1 KB با نام فیلدهای تکراری معمولاً به حدود ۲۰۰–۳۰۰ بایت فشرده میشود — کاهش حجم چهار تا پنج برابر. لاگهای متنی بزرگ اغلب تا ۹۰٪ یا بیشتر فشرده میشوند. ورودیهایی که قبلاً فشرده شدهاند (JPEG، PNG، MP4، ZIP) بیشتر کوچک نخواهند شد و ممکن است چند بایت به دلیل قاببندی GZIP بزرگتر شوند.
این فشردهساز GZIP خروجی استاندارد RFC 1952 را مستقیماً در مرورگر شما تولید میکند. چه در حال کوچک کردن payload قبل از انتقال باشید چه در حال تولید یک فایل .gz برای آرشیو، نتیجه با هر ابزار آگاه از GZIP در شبکه قابل استفاده است.