2010-07-13 12 views
17

यदि आपकी वेबसाइट ने डिस्प्ले/ज़िप संपीड़न सक्षम किया है तो क्या जावास्क्रिप्ट न्यूनीकरण के लिए कोई बिंदु है?क्या आपके पास संपीड़न चालू होने पर जावास्क्रिप्ट न्यूनीकरण के लिए कोई बिंदु है?

मेरा सिद्धांत यह है कि एक संपीड़ित minified जावास्क्रिप्ट फ़ाइल और एक संपीड़ित अपूर्ण जावास्क्रिप्ट फ़ाइल के बीच का अंतर नगण्य है।

वहां बहुत कम ब्राउज़र हैं जो संपीड़न का समर्थन नहीं करते हैं। मैं कल्पना करता हूं कि कुछ बॉट (मकड़ियों) संपीड़न का समर्थन नहीं कर सकते हैं (मुझे कम से कम एक पता है) लेकिन वे आपकी जावास्क्रिप्ट में "दिलचस्पी" होने की संभावना नहीं हैं क्योंकि वे जेएस को निष्पादित करने की संभावना नहीं रखते हैं और इसलिए इसे डाउनलोड नहीं करना चाहिए।

+2

देखें [Gzip बनाम minify] (http://stackoverflow.com/questions/807119/gzip-versus-minify)। –

+1

कमीशन टिप्पणियों को तोड़ देगा, आकार को कम कर देगा जो संपीड़न अकेले कर सकता है। –

+1

मिनीफाइड क्लाइंट पर तेजी से पार्स करेगा और अकेले संपीड़न की तुलना में अधिक जगह बचाएगा –

उत्तर

28

चलो बस इसका परीक्षण करें। मैंने निम्नलिखित संख्या प्राप्त करने के लिए jQuery 1.4.2 और gzip (झंडे के बिना; में कोई महत्वपूर्ण अंतर नहीं लग रहा है) का उपयोग किया।

  • विकास: 163,855 बाइट्स
  • विकास, संकुचित: 45,994 बाइट्स
  • Minified: 72,174 बाइट्स
  • Minified, संकुचित: 24,565 बाइट्स

तो, यह विशेष रूप से मामला, खनन फ़ाइल को लगभग दोगुना छोटा बनाता है। माना जाता है कि विकास रिलीज टिप्पणियों से भरा है। के उन को निकाल देते हैं, और देखो क्या होता है:

  • Stripped: 131,155 बाइट्स
  • Stripped, संकुचित: 32,914 बाइट्स

अभी भी minified संस्करण तुलना में काफी बड़ा है यही कारण है कि।

2

आपके द्वारा gzip से पहले फ़ाइल को छोटा करने से पहले सर्वर प्रदर्शन में थोड़ा अंतर आएगा, हालांकि मुझे संदेह है कि इसमें बहुत कुछ शामिल है। कमीशन टिप्पणियों को हटा देगा, जो gzip/deflate नहीं होगा, लेकिन इसके अलावा मैं कहूंगा कि आप सही हैं।

बेशक, हमेशा आईई 6 होता है। मेरे अनुभव में, यह ब्राउज़र अविश्वसनीय है जब टेक्स्ट/एचटीएमएल के अलावा कुछ भी gzipped आता है। यह लगभग उस बिंदु पर है जहां इससे कोई फर्क नहीं पड़ता, हालांकि, आईई 6 उपयोग जारी रहता है।

+1

यह * लगभग * उस बिंदु पर है जहां इससे कोई फर्क नहीं पड़ता? काश मैं अपने ग्राहकों को एक ही विचार ले लिया। यह "थोड़ा गर्भवती" ट्रोप की तरह है: जब तक आपके क्लाइंट में से केवल एक आईई 6 समर्थन पर जोर देता है, तो आपको इसका समर्थन करना होगा। मैं नरक चाहता हूं माइक्रोसॉफ्ट किसी भी तरह इस मुद्दे को मजबूर करेगा और इसे पूरी तरह से छुटकारा पायेगा। – Robusto

+0

निश्चित रूप से, यदि आप ग्राहक काम कर रहे हैं तो यह उनके ऊपर है। यदि नहीं, तो यह आपके विवेकाधिकार है - हाल ही में जिन साइटों के साथ मैं काम करता हूं, उनमें से केवल 2.5% विज़िटर आईई 6 का उपयोग कर रहे हैं। हम अभी भी इसका समर्थन करते हैं, लेकिन शायद अगर हमने नहीं किया, तो प्रभाव बहुत बड़ा नहीं होगा। मैं लगभग एक साल में इसके बारे में चिंता करना बंद करने की उम्मीद करता हूं। – JAL

+0

एमएस इन्फोपैथ के पुराने संस्करणों से इंफोपाथ 2010 में मुफ्त अपग्रेड की पेशकश करके इस मुद्दे को मजबूर करने में मदद कर सकता है। मुझे कॉर्पोरेट दुनिया से कई आईई 6 उपयोगकर्ता-एजेंट तारों में "इन्फोपाथ" दिखाई देता है (ऐसी साइट के माध्यम से जो अभी भी लगभग 30% आईई 6 है हारने वाले उपयोगकर्ता)। जाहिर है, अगर आप पुरानी InfoPath के साथ IE7 स्थापित करते हैं, तो चीजें तोड़ती हैं। – Matt

2

मैं दोनों मूल और न्यूनतम किया संस्करणों में jQuery-1.3.2 ज़िप करने की कोशिश की:

jquery-1.3.2.js  118 kb -> 36 kb 
jquery-1.3.2.min.js 56 kb -> 20 kb 

तो, संपीड़ित करने से पहले कम करने से एक बड़ा diffence पड़ता है।

+0

यह दिलचस्प है। टिप्पणियों को हटाने के अलावा, यह क्यों हो सकता है पर कोई अटकलें? – JAL

+1

छोटाकरण कोड को अधिक सजातीय बनाता है, जिसका अर्थ है कि इसे बेहतर संपीड़ित किया जा सकता है। आपके पास कम "शोर" (लंबा चर नाम) और समान प्रतीकों के अधिक '() [] {}' आदि हैं।जो एक उच्च संपीड़न अनुपात की अनुमति देता है, जैसे कि वास्तविक डेटा के साथ ज़ीरोस से भरा फ़ाइल छोटा हो जाता है, वास्तविक डेटा (जो सभी शून्य नहीं है) –

+0

निश्चित रूप से, यदि आप संक्षेप का उपयोग कर रहे हैं जो वेरिएबल्स का नाम बदलता है जो समझ में आता है । क्या क्लोजर कंपाइलर की तरह कुछ और नहीं है? मैं उस प्रकार के बारे में सोच रहा था जो केवल सफेद जगहों और टिप्पणियों को हटा देता है। – JAL

1

मुझे विश्वास है कि एक छोटा संस्करण तेजी से चलाएगा। परिवर्तनीय अब 1-2 ग्लिफ लंबा हैं, इसलिए पार्सिंग तेज है, सफेद जगह और टिप्पणियां एक गैर-समस्या है। बेशक, आपको वास्तव में बताए जाने में सक्षम होने के लिए एक परीक्षण तैयार करने की आवश्यकता होगी।

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

- डेव

0

प्रत्येक बाइट मायने रखता है। जितना अधिक आप बचाते हैं, उतना ही बेहतर होता है।

0

आप एक जावास्क्रिप्ट कंप्रेसर/पैकर का भी उपयोग कर सकते हैं जो बेस -62 एन्कोडिंग जैसे कुछ का उपयोग करता है (उदाहरण के लिए, this)।

यह 72174 बाइट्स (jquery-1.4.2.min.js) को लगभग 50640 बाइट्स में बदल सकता है। हालांकि, इसे आगे बढ़ाना, संशोधित फ़ाइल (24K भी) के प्रत्यक्ष gzipping की तुलना में संपीड़न में सुधार नहीं करेगा।

(यदि आप कंप्रेसर/पैकर का उपयोग कर रहे हैं, तो आप लाइसेंस हेडर को संरक्षित करने की भी आवश्यकता हो सकती है, इस उदाहरण में लगभग 400 बाइट्स)।

+0

जावास्क्रिप्ट कंप्रेसर का उपयोग न करें; फ़ाइल को स्थानांतरित करने के लिए लगभग एक ही आकार होगा, लेकिन यह धीमा हो जाता है, क्योंकि जावास्क्रिप्ट के भीतर डिकंप्रेशन देशी तरीका है * देशी जीज़िप का उपयोग करके डिकंप्रेशन से धीमा। देखें http://www.ericmmartin.com/comparison-of-javascript-compression-methods/ –

+0

मैं बस आकार पर विचार कर रहा था, लेकिन आप सही हैं। – Bruno

0

याहू की डेवलपर साइट - http://developer.yahoo.com/performance/rules.html देखें - कुछ स्पष्टीकरण के लिए संपीड़न के साथ खनन क्यों अच्छा है। इसके अलावा, स्टीव साउडर द्वारा कुछ भी देखें (High Performance Web Sites - भयानक साइट और पुस्तक!)।

मैं तब तक रोक नहीं सकता जब तक कि आप वास्तव में अपनी स्क्रिप्ट से जितना अधिक कर सकें उतना निचोड़ना नहीं चाहते। आपके जावास्क्रिप्ट को कैसे लिखा है, इस पर निर्भर करते हुए, त्रुटियों का कारण बन सकता है। आप बस खनन और 80-90% रास्ते के रास्ते से बेहतर हो सकते हैं।

शुभकामनाएं!

0

ध्यान रखें कि वास्तव में जानकारी छोड़ देता है। व्हाइटस्पेस/टिप्पणियां/लंबा परिवर्तनीय नाम/आदि ... पूरी तरह से त्याग दिया गया है (और पुनर्प्राप्त नहीं किया जा सकता है)।

दूसरी ओर, सर्वर संपीड़न, हानि रहित होने की आवश्यकता है, इसलिए यह किसी भी जानकारी को त्याग नहीं सकता है। यह केवल संपीड़ित कर सकता है।

इसलिए सर्वर संपीड़न (सैद्धांतिक रूप से) संपीड़न के समान स्तर तक नहीं पहुंच सकता है जो minificaiton (सैद्धांतिक रूप से) प्राप्त कर सकता है।

Remember, though that while theory and practice are theoretically the same, in practice they never are। :-)

संबंधित मुद्दे