2009-08-29 11 views
20

मैं सिर्फ पाया डीन एडवर्ड्स जावास्क्रिप्ट यहाँ पैकर: http://dean.edwards.name/packer/क्या बेस62 को जावास्क्रिप्ट फ़ाइल एन्कोड करना बुरा है?

यह विकल्पों में से एक जोड़ी है,

  1. Base62 इनकोड
  2. चर

सिकोड़ें परीक्षण करने के लिए यह मैं नवीनतम ले लिया jquery का संस्करण जो पहले से ही 56kb तक छोटा हो गया है और इसे उस पृष्ठ पर ऊपर घुमाए गए चर के साथ चलाया गया है, परिणाम एक ही आकार की फ़ाइल है, 56kb।

फिर मैंने मूल फ़ाइल को बेस 62 एन्कोड और शंकु चर दोनों के साथ फिर से चलाया और परिणाम 42kb फ़ाइल थी।

अब मुझे अन्य को छोटा करने और पैक करने के बारे में बहुत कुछ पता नहीं है, तो यह फाइलसाइज को छोटा बनाता है। लेकिन मैं उत्सुक हूं कि बेस 62 एन्कोड क्या कर रहा है, क्या इसका उपयोग करना बुरा है? मुझे लगता है कि यह फ़ाइल को बहुत छोटा बनाता है लेकिन क्या यह पृष्ठ पर इसे डीकोड करने के लिए बाद में अधिक काम/लोड बनाता है?

उत्तर

34

बेस 62 लेकिन एक positional notation कुछ नहीं है। यही है, इसका उपयोग बहुत ही कम संस्करण द्वारा बहुत लंबे सामान्य पाठ का प्रतिनिधित्व करने के लिए किया जा सकता है।

बेस 62 का उपयोग करने से पहले जेएस को ग्राहकों द्वारा उपयोग करने के लिए अतिरिक्त कदम जोड़ा जा सकता है। JQuery की लाइब्रेरी के लिए यह कदम कई कारकों के आधार पर ग्राहकों पर 500ms समय के लिए अतिरिक्त 100ms ले सकता है।

अब हम स्क्रिप्ट को निष्पादित करने के लिए अतिरिक्त समय तक स्क्रिप्ट डाउनलोड करने के लिए समय में कमी की तुलना कर सकते हैं। यह 50ms तक डाउनलोड समय को कम कर सकता है लेकिन इसे संसाधित करने के लिए अतिरिक्त 100ms लेता है। न्यासियों का बोर्ड!!

+0

अच्छे अंक, धन्यवाद, शायद मुझे इससे दूर रहना चाहिए – JasonDavis

+0

मैं यह भी जोड़ना चाहता हूं कि यह एक अच्छा विकल्प है यदि सर्वर प्रतिक्रियाओं को gzip नहीं करता है। अतिरिक्त कार्य के कारण पुस्तकालयों को न केवल अनन्य एप्लिकेशन फ़ाइलों को लक्षित करें। –

16

यह क्लाइंट पर अधिक काम करता है। एन्कोडेड स्क्रिप्ट को डीकोड करने के लिए क्लाइंट को कोड चलाने के लिए है। यह बहुत स्पष्ट है अगर आप एन्कोडिंग ब्लॉक में केवल थोड़ी सी कोड दर्ज करते हैं।

उदाहरण के लिए:

var a = 10; 

Encodes के रूप में:

eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0 1=2;',3,3,'var|a|10'.split('|'),0,{})) 
संबंधित मुद्दे