gzip (DEFLATE)
देखें कि gzip टेक्स्ट को कैसे छोटा करता है: रिपीट छोटी कॉपी बन जाते हैं, और Huffman कोड बार-बार आने वाले सिंबल को कम बिट देते हैं।
- विंडो: 32 KB
- कॉपी: 3-258 बाइट
- कोड: 15 बिट तक
- gzip फ़्रेम: 18 बाइट
इनका मतलब क्या है?
- लिटरल: जैसे का तैसा लिखा गया कैरेक्टर, क्योंकि उसकी पोज़िशन से 3 या ज़्यादा कैरेक्टर का कोई रिपीट शुरू नहीं होता।
- कॉपी: एक लंबाई और एक दूरी, जिसका मतलब है "इतने पीछे से इतने कैरेक्टर लो"। यह उसी टेक्स्ट पर ओवरलैप कर सकती है जो यह खुद बनाती है।
- विंडो: कम्प्रेसर रिपीट खोजने के लिए कितना पीछे देख सकता है। gzip में 32 KB, Brotli में 16 MB तक।
- Huffman कोड: हर सिंबल के लिए बिट का एक कोड, बार-बार आने वाले सिंबल के लिए छोटा, जो एक ट्री से बनता है जिसमें सबसे कम आने वाले दो सिंबल बार-बार जोड़े जाते हैं।
- प्रीफ़िक्स-फ़्री: कोई भी कोड किसी दूसरे कोड की शुरुआत नहीं है, इसलिए कोड की धारा को बिना सेपरेटर के वापस पढ़ा जा सकता है।
टेक्स्ट में 23 कैरेक्टर हैं, बिना कम्प्रेशन के 184 बिट। कम्प्रेसर इसे बाएँ से दाएँ पढ़ता है और हर पोज़िशन पर देखता है कि आगे जो है, वह पहले आ चुका है या नहीं।
स्पेस: चलाएं या रोकें। बाएं और दाएं ऐरो: चरण दर चरण। Home और End: सीधे जाएं।
इसे आज़माएं: एक ही अक्षर कई बार टाइप करें। दूरी 1 वाली एक ही कॉपी उन सबको कवर कर लेती है, क्योंकि कॉपी उसी टेक्स्ट पर ओवरलैप कर सकती है जो वह खुद बना रही है।
यह कैसे काम करता है
gzip, DEFLATE को दो चरणों में चलाता है। LZ77 टेक्स्ट पर आगे बढ़ता है और हर पोज़िशन पर बाइट की वह सबसे लंबी लड़ी खोजता है जो पिछले 32 KB में पहले आ चुकी है; उन्हें दोहराने की जगह वह एक जोड़ी लिखता है: कितने बाइट कॉपी करने हैं (3-258) और वे कितने पीछे हैं। जो बचता है, यानी लिटरल और ये जोड़ियाँ, उसे फिर Huffman कोड से लिखा जाता है: बार-बार आने वाले सिंबल को छोटे कोड मिलते हैं और कम आने वालों को लंबे। gzip नतीजे को 10 बाइट के हेडर और CRC-32 चेकसम वाले 8 बाइट के ट्रेलर में लपेटता है।
यह कब सही विकल्प है
gzip ऐसे टेक्स्ट को कम्प्रेस करता है जिसमें दोहराव हो: HTML, CSS, JavaScript, JSON, लॉग, CSV। हर ब्राउज़र और सर्वर इसे समझता है, यह हर लेवल पर तेज़ है, और रिस्पॉन्स को चलते-चलते कम्प्रेस करने के लिए यही सुरक्षित डिफ़ॉल्ट है। जो डेटा पहले से कम्प्रेस है, जैसे JPEG, PNG, WOFF2 या ZIP, उसमें कोई रिपीट नहीं बचा, इसलिए gzip बस अपना फ़्रेम जोड़ देता है।
आपके अपने टेक्स्ट पर
वही दो चरण, लंबे टेक्स्ट पर असली gzip (लेवल 6) से। अपना टेक्स्ट पेस्ट करें, या Gzip और Brotli कम्प्रेशन टूल से लाएँ।