दिलचस्प पोस्ट

अपाचे द्वारा प्रदत्त पाठ फ़ाइलों के लिए gzip के बजाय deflate का उपयोग क्यों करें?

एचएएल, सीएसएस और जावास्क्रिप्ट फाइल्स के लिए कोई एलएएमपी सर्वर द्वारा दी जाने वाली विधि के लिए कोई भी विधि क्या लाभ देती है। क्या बेहतर विकल्प हैं?

सर्वर एक नक्शा अनुप्रयोग को जेसन के माध्यम से जानकारी प्रदान करता है, इसलिए बड़ी मात्रा में छोटी फाइलें

यह भी देखें क्या एचपी कम्प्रेशन के लिए डिफ्लेट पर जीज़िप चुनने में कोई हिट हुई है?

Solutions Collecting From Web of "अपाचे द्वारा प्रदत्त पाठ फ़ाइलों के लिए gzip के बजाय deflate का उपयोग क्यों करें?"

अपाचे द्वारा प्रदत्त पाठ फ़ाइलों के लिए gzip के बजाय deflate का उपयोग क्यों करें?

सरल उत्तर ऐसा नहीं है


आरएफसी 2616 deflate परिभाषित करता है:

डीफ़्लेट करें आरएफसी 1 9 51 में आरएफसी 1 9 51 में वर्णित "डीफलेट" संपीड़न तंत्र के साथ संयोजन में "ज़लिब" प्रारूप को परिभाषित किया गया है

Zlib प्रारूप को आरएफसी 1950 में परिभाषित किया गया है:

0 1 +---+---+ |CMF|FLG| (more-->) +---+---+ 0 1 2 3 +---+---+---+---+ | DICTID | (more-->) +---+---+---+---+ +=====================+---+---+---+---+ |...compressed data...| ADLER32 | +=====================+---+---+---+---+ 

इसलिए, कुछ हेडर और एक ADLER32 चेकसम

आरएफसी 2616 gzip को परिभाषित करता है:

gzip एक एन्कोडिंग प्रारूप जो फ़ाइल संपीड़न प्रोग्राम "जीज़यूपी" (जीएनयू ज़िप) द्वारा उत्पादित है, जैसा कि आरएफसी 1 9 52 [25] में वर्णित है यह प्रारूप एक 32 बिट सीआरसी के साथ लिम्प्ेल-ज़िविंग कोडिंग (एलजे 77) है।

आरएफसी 1 9 52 संकुचित डेटा को निम्नानुसार परिभाषित करता है:

प्रारूप वर्तमान में संपीड़न के डीफलेट विधि का उपयोग करता है, लेकिन अन्य संपीड़न विधियों का उपयोग करने के लिए इसे आसानी से बढ़ाया जा सकता है।

सीआरसी -32 एडीएलआर 32 की तुलना में धीमी है

एक ही लंबाई की चक्रीय अतिरेक की तुलना में, यह गति के लिए विश्वसनीयता (बाद वाले को पसंद करते हैं) में ट्रेड करता है।

इसलिए … हमारे पास 2 संपीड़न तंत्र हैं जो संपीड़न के लिए समान एल्गोरिथ्म का उपयोग करते हैं, लेकिन हेडर और चेकसम के लिए एक अलग एल्गोरिदम।

अब, अंतर्निहित टीसीपी पैकेट पहले से ही बहुत विश्वसनीय हैं , इसलिए यह मुद्दा एडलर 32 बनाम सीआरसी -32 नहीं है जो कि जीजेआईपी उपयोग करता है।


वर्षों में कई ब्राउज़रों को चालू करता है, एक गलत deflate एल्गोरिथम लागू होता है। आरएफसी 1950 में zlib हेडर की अपेक्षा करने के बजाय उन्हें बस संकुचित पेलोड की उम्मीद थी। इसी प्रकार विभिन्न वेब सर्वर ने एक ही गलती की।

इसलिए, वर्षों में ब्राउज़रों ने फजी लॉजिक डिफ्लेट कार्यान्वयन को लागू करना शुरू किया, वे zlib हेडर और एडलर चेकसम के लिए प्रयास करते हैं, अगर वह विफल हो जाता है तो वे पेलोड के लिए प्रयास करते हैं।

जटिल तर्क होने का परिणाम यह है कि यह अक्सर टूटा हुआ है। वर्व स्टूडियो में एक उपयोगकर्ता का परीक्षण अनुभाग है जो दिखाता है कि स्थिति कितनी बुरी है

उदाहरण के लिए: Safari 4.0 में डिफ्लेट काम करता है, लेकिन सफारी 5.1 में टूटा हुआ है, यह हमेशा IE पर समस्या रखता है।


तो, करने के लिए सबसे अच्छी बात पूरी तरह से मुनाफे को टालना है, छोटे गति को बढ़ावा देने (एडलर 32 की वजह से) टूट पेलोड के जोखिम के लायक नहीं है।

GZip बस एक चेकसम और हेडर / पाद लेख से छूट जाता है Deflate तेज है , हालांकि, जैसा कि मैंने कठिन तरीके से सीखा।

gzip बनाम deflate ग्राफ

आप शायद एक विकल्प के रूप में मुद्रास्फीति को चुनने में सक्षम नहीं हैं। क्या आप mod_deflate उम्मीद कर सकते हैं के विपरीत deflate लेकिन gzip का उपयोग नहीं कर रहा है इसलिए, जबकि अधिकांश बिंदुएं मान्य हैं, संभवतः यह अधिकतर के लिए प्रासंगिक नहीं है।

इसका मुख्य कारण यह है कि डिफ्लेट जीपीएस के मुकाबले तेजी से एन्कोड करने के लिए और एक व्यस्त सर्वर पर फर्क पड़ता है जो अंतर कर सकता है स्थिर पृष्ठों के साथ यह एक अलग प्रश्न है, क्योंकि वे आसानी से एक बार पूर्व संकुचित हो सकते हैं।

मुझे लगता है कि डिफलेट और जीज़िप के बीच कोई बड़ा अंतर नहीं है, क्योंकि मूल रूप से जीज़िप केवल एक हेल्टर है, जो मुस्कराहट के आसपास लिपटे है (देखें आरएफसी 1 9 51 और 1 9 52)।

mod_deflate आपके सर्वर पर कम संसाधनों की आवश्यकता है, हालांकि आप संपीड़न की मात्रा के संदर्भ में एक छोटा दंड दे सकते हैं

यदि आप कई छोटी फाइलों की सेवा कर रहे हैं, तो मैं आपके संकुचित और असंपीड़ित समाधानों का परीक्षण करने के लिए बेंचमार्किंग और लोड की अनुशंसा करता हूं – आप कुछ मामलों को ढूंढ सकते हैं जहां संपीड़न को सक्षम करने से बचत नहीं होगी।

जिक्सिप में कोई अंतर नहीं होना चाहिए और डीकंप्रेसन के लिए डिफ्लेट होना चाहिए। Gzip सिर्फ एक कुछ चेकसम सहित चारों ओर लपेटा कुछ दर्जन बाइट हेडर के साथ झुकना है। चेकसम धीमी संपीड़न के लिए कारण है। हालांकि, जब आप फ़ाइलों के ज़िलियॉन्स को प्रीकॉर्फ़ कर रहे हैं, तो आप उन चेकसम को अपनी फाइल सिस्टम में विवेकपूर्ण जांच के रूप में चाहते हैं। इसके अलावा आप फ़ाइल पर आँकड़े प्राप्त करने के लिए कमांडलाइन टूल का उपयोग कर सकते हैं। हमारी साइट के लिए हम एक टन की स्थिर डेटा (संपूर्ण खुली निर्देशिका, 13,000 गेम, लाखों कीवर्ड के लिए स्वत: पूर्ण) इत्यादि को अग्रसारित कर रहे हैं और हम Alexa से सभी वेबसाइटों की तुलना में 95% तेज हैं। फैक्सो खोज हालांकि, हम घरेलू उत्पादित स्वामित्व वेब सर्वर का उपयोग करते हैं अपाचे / mod_deflate ने अभी इसे कट नहीं किया जब ये फाइलें फाइल सिस्टम में संकुचित हो जाती हैं, तो न केवल आप अपनी फ़ाइल के लिए न्यूनतम फाइलसिस्टम ब्लॉक आकार के हिट लेते हैं, लेकिन फ़ाइल सिस्टम में फ़ाइल को प्रबंधित करने में सभी अनावश्यक ओवरहेड हैं जो वेबसर्वर के बारे में कम देखभाल कर सकता है। आपकी चिंताओं को कुल डिस्क पदचिह्न और एक्सेस / डीकंप्रेस का समय होना चाहिए और यह डेटा precompressed प्राप्त करने में सक्षम होने में दूसरी गति होनी चाहिए। पदचिह्न महत्वपूर्ण है क्योंकि भले ही डिस्क स्थान सस्ती है, आप कैश में जितना संभव हो उतना चाहते हैं।

भविष्य के संदर्भ के लिए:

अपाचे 2 और डीफ़्लैट मॉड्यूल को पहले से स्थापित किए गए डेबियन सिस्टम (मैं उबुंटू पर हूं) के तहत (जो इसे डिफ़ॉल्ट रूप से है), आप दो आसान चरणों में डीफ़्लेट संपीड़न को सक्षम कर सकते हैं:

 a2enmod deflate /etc/init.d/apache2 force-reload 

और तुम दूर हो! मुझे अपने एडीएसएल कनेक्शन में पन्नों को बहुत तेजी से भरी हुई सेवा मिली!

अगर मुझे ठीक से याद है

  • gzip deflate की तुलना में एक छोटे से अधिक सेक जाएगा
  • deflate अधिक कुशल है