GZIP पर संपीड़न ब्राउज़र संगतता और फायदे बताएं


91

अद्यतन 10 फरवरी 2012:

zOompf ने यहाँ इसी विषय पर कुछ बहुत गहन शोध पूरा किया है । यह नीचे दिए गए किसी भी निष्कर्ष को रौंद देता है।


अद्यतन 11 सितम्बर 2010:

इसके लिए एक परीक्षण मंच बनाया गया है




HTTP 1.1 कुछ पृष्ठभूमि जानकारी के लिए GZIP और DEFLATE (zlib) की परिभाषा:

"'Gzip' gzip फॉर्मेट है, और 'deflate' zlib फॉर्मेट है । उन्हें शायद कच्चे डिफ्लेक्टेड डेटा फॉर्मेट के साथ कन्फ्यूजन से बचने के लिए दूसरे 'zlib' को कॉल करना चाहिए। जबकि HTTP 1.1 RFC 2616 सही ढंग से पॉइंट करता है। 'डिफ्लेट' ट्रांसफर एन्कोडिंग के लिए RFC 1950 में zlib विनिर्देशन, ऐसे सर्वर और ब्राउज़र की रिपोर्टें हैं, जो RFC 1951 के सबसे ख़ासकर Microsoft उत्पादों में ख़राब स्पेसिफिकेशन के अनुसार गलत डीफ़ॉल्ट डेटा का उत्पादन या उम्मीद करते हैं । zlib प्रारूप का उपयोग करके अंतरण एन्कोडिंग अधिक कुशल दृष्टिकोण होगा ( और वास्तव में वही है जो zlib प्रारूप के लिए डिज़ाइन किया गया था), '1.1 gzip' ट्रांसफर एन्कोडिंग का उपयोग HTTP 1.1 लेखकों की ओर से नाम के एक दुर्भाग्यपूर्ण विकल्प के कारण अधिक विश्वसनीय है। "(स्रोत: http://www.gzip.org/zlib/zlib_faq.html )

इसलिए, मेरा प्रश्न: अगर मैं रॉ ज़्लॉपर डेटा NO zlib आवरण (या gzip, उस मामले के लिए) के साथ भेजता हूं तो क्या कोई आधुनिक ब्राउज़र हैं (जैसे, IE6 और up, FF, Chrome, Safari, आदि) जो कच्चे अपस्फीति को समझ नहीं सकते हैं संपीड़ित डेटा (HTTP अनुरोध हेडर "स्वीकार-एन्कोडिंग" में "डिफ्लेट" शामिल है)?

Deflate data ALWAYS GZIP से कुछ बाइट छोटा होगा।

यदि ये सभी ब्राउज़र डेटा को सफलतापूर्वक डिकोड कर सकते हैं, तो zlib के बजाय RAW को अपस्फीति भेजने के लिए क्या डाउनसाइड हैं?



अद्यतन 11 सितम्बर 2010:

इसके लिए एक परीक्षण मंच बनाया गया है


1
क्या आप इस बात का विस्तार करेंगे कि zlib.net की तुलना में System.IO.Compression.DeflateStream बेकार क्यों है? Google मुझे यह नहीं दिखा रहा है कि एक व्यक्ति को छोड़कर इसका उल्लेख प्रासंगिक है "इसमें विशेष रूप से अच्छा संपीड़न अनुपात नहीं है।"
जोएल मुलर

सही, दोनों .net के gzip और अपस्फीति विधियों के लिए संपीड़न अनुपात कहीं भी नहीं लगता है कि वे क्या होना चाहिए। हालाँकि, मैंने दोनों (zlib.net बनाम देशी .net) के बीच कोई स्पीड बेंचमार्क नहीं किया है।
डेविड मर्डोक

आप केवल अपने परीक्षण मामले के परिणामों को लॉग इन क्यों नहीं करते?
गुम्बो

1
मैं System.IO.Compression lib में चारों ओर प्रहार कर रहा हूं, और यह एक स्थिर / पूर्व-परिभाषित वृक्ष का उपयोग करता प्रतीत होता है- इस प्रकार संपीड़न विशिष्ट स्ट्रीम के लिए अनुकूलित नहीं है। सबसे तेज़ तरीका होना चाहिए, लेकिन निश्चित रूप से खराब संपीड़न अनुपात उत्पन्न करेगा।
ब्रैडी मोरित्ज़

2
@JoelMueller यह समझा सकता है: virtualdub.org/blog/pivot/entry.php?id=335
Nayuki

जवाबों:


37

अद्यतन: ब्राउजर कच्चे अपस्फीति के लिए समर्थन छोड़ रहा है। zOompf ने यहाँ इसी विषय पर कुछ बहुत गहन शोध पूरा किया हैदुर्भाग्य से, ऐसा प्रतीत होता है कि कच्चा अपस्फीति उपयोग के लिए सुरक्षित नहीं है।


अधिक परिणामों के लिए http://www.vervestudios.co/projects/compression-tests/results चेक करें ।

यहां वे ब्राउज़र दिए गए हैं जिनका परीक्षण किया गया है:

/*  Browser                       DEFLATE      ZLIB     */
    XP Internet Explorer 6        PASS         FAIL
    XP Internet Explorer 7        PASS         FAIL
    XP Internet Explorer 8        PASS         FAIL
    Vista Internet Explorer 8     PASS         FAIL
    XP Firefox 3.6.*              PASS         PASS
    XP Firefox 3.5.3              PASS         PASS
    XP Firefox 3.0.14             PASS         PASS
    Win 7 Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.5.3           PASS         PASS
    XP Safari 3                   PASS         PASS
    XP Safari 4                   PASS         PASS     
    XP Chrome 3.0.195.27          PASS         PASS
    XP Opera 9                    PASS         PASS
    XP Opera 10                   PASS         PASS
    XP Sea Monkey 1.1.8           PASS         PASS
    Android 1.6 Browser (v4)*     N/A          N/A
    OS-X Safari 4                 PASS         PASS
    OS X Chrome 7.0.517.44        PASS         PASS
    OS X Opera 10.63              PASS         PASS
    iPhone 3.1 Safari             PASS         PASS

* एंड्रॉइड HTTP अनुरोध शीर्षलेख "स्वीकार-एन्कोडिंग: gzip" भेजता है। अपस्फीति की अनुमति नहीं है।


मैं यह निष्कर्ष निकालता हूं कि हम हमेशा कच्चे DEFLATE भेज सकते हैं (जब HTTP अनुरोध शीर्षलेख "स्वीकार-एनकोडिंग" में "डिफ्लेट" होता है) और ब्राउज़र एन्कोडेड डेटा की सही व्याख्या करने में सक्षम होगा। क्या कोई इसे गलत साबित कर सकता है?

नोट: .NET का मूल कार्यान्वयन DEFLATE (System.IO.Compression.DeflateStream) कच्चा DEFLATE है। यह भी बेकार है। कृपया अपने सभी .NET डिफ्लेटिंग जरूरतों के लिए zlib.net का उपयोग करें ।


1
क्या आप अपस्फीति के लिए zlib.net का उपयोग करने पर अधिक विशिष्ट हो सकते हैं? यह उपरोक्त चार्ट से कैसे मेल खाता है, जहां यह कहता है कि कच्चे अपस्फीति काम करता है लेकिन zlib कुछ XP IE मामलों में नहीं है?
डेविड एइसन

एंड्रॉइड एपीआई 9. के बाद से अपस्फीति का समर्थन करता है। देखें: developer.android.com/reference/java/util/zip/… अधिक जानकारी के लिए
अपस्फीति android.com/reference/java/util/zip/… स्टुअर्ट ब्लैकलर

1
@DavidMurdoch आपके परीक्षणों से एकमात्र समझदार परिणाम कभी भी अपवित्र , vervestudios.co/projects/compression-tests/results का उपयोग नहीं करने के लिए लगता है मुझे लगता है कि इस उत्तर को प्रतिबिंबित करने के लिए संपादित किया जाना चाहिए कि
सैम

हाँ, मैं सहमत हूँ। इसे अब अपडेट किया जा रहा है।
डेविड मर्डोक

6

Android 1.6 ब्राउजर (v4) आपके पेज पर zlib और डिफ्लेट टेस्ट दोनों को विफल करता है। मैंने इसे आपकी सूची में जोड़ दिया है।


धन्यवाद! Android का ब्राउज़र क्या सामग्री-एन्कोडिंग भेजता है?
डेविड मर्डोक

यह 'स्वीकार-एनकोडिंग: gzip' भेजता है।
जोसेफ पिफल्गर

1

क्या ऐसा नहीं है कि AddOutputFilterByType DEFLATEडिफ़ॉल्ट रूप से gzip द्वारा mod_deflate का उपयोग किया जाता है?


1
हे पॉल, मुझे लगता है कि मैं एक सेलिब्रिटी से बात कर रहा हूं ... आप हर जगह हैं। :-) वैसे भी, AddOutputFilertByType DEFLATEडिफ़ॉल्ट रूप से (जहाँ तक मुझे पता है) द्वारा इसे टालने के बजाय प्रतिक्रिया मिली है। Gzipis deflate+ a 10 बाइट हैडर + 8 बाइट पाद लेख - जिसका अर्थ है कि Gzipहमेशा की तुलना में बड़ा होगा deflate... तो हमें कभी भी gzip का उपयोग क्यों करना चाहिए? (देखें कि क्या gzip से बना है) के टूटने के लिए en.wikipedia.org/wiki/Gzip#File_format )। उस के साथ कहा, मुझे यकीन नहीं है कि deflateअपाचे में पसंदीदा संपीड़न विधि के रूप में सेटिंग के बारे में कैसे जाना है ।
डेविड मर्डोक

-1

जहाँ तक मुझे पता है, हाँ - बहुत ज्यादा आप "हमेशा कच्चे माल भेज सकते हैं और सब कुछ ठीक होगा" ... "हमेशा" नहीं है, लेकिन सभी मामलों में से अधिकांश। यदि नहीं, तो यह ब्राउज़र की समस्या है।


मैं उन मामलों को खोजने की कोशिश कर रहा हूं जब कच्चे अपस्फीति विफल हो जाते हैं। युक्ति के अनुसार यह सभी ब्राउज़रों में विफल होना चाहिए।
डेविड मर्डोक

कच्चे deflate(यानी नहीं zlib , सभी में कोई हेडर) में केवल काम करेगा IE7 अगर encoding:gzipऔर (केवल क्रोम सं .24 में परीक्षण) encoding:deflateमें क्रोम
स्कूटी.नेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.