2010-11-10 18 views
11

ने HTML-दस्तावेज़ों का पूर्वावलोकन करने के लिए अभी एक छोटा सा वेबपैम बनाया है जो यूआरएल उत्पन्न करता है: जिसमें बेस 64 एन्कोडेड डेटा में HTML (और सभी इनलाइन सीएसएस और जावास्क्रिप्ट) शामिल है। समस्या यह है कि यूआरएल: जल्दी से थोड़ी देर तक मिलता है। डेटा हानि के बिना पहले स्ट्रिंग को संपीड़ित करने के लिए "डी फैक्टो" मानक तरीका क्या है (अधिमानतः जावास्क्रिप्ट)?बेस 64 एन्कोडिंग से पहले स्ट्रिंग को छोटा करने के लिए लापरवाही संपीड़न विधि इसे कम करने के लिए?

पीएस; मैं Huffman और स्कूल में Lempel-Ziv के बारे में कुछ समय पहले पढ़ा है, और मैं वास्तव में LZW :) का आनंद ले याद

संपादित करें:

समाधान पाया; ऐसा लगता है कि rawStr => utf8Str => lzwStr => base64Str जाने का तरीका है। मैं utf8 और lzw के बीच हफमैन संपीड़न को लागू करने पर आगे काम कर रहा हूं। समस्या अब तक है कि बेस 64 पर एन्कोड किए जाने पर बहुत सारे वर्ण बहुत लंबे हो जाते हैं।

उत्तर

5

this answer देखें। यह एलजेडब्लूडब्ल्यू संपीड़न/डिकंप्रेशन (http://jsolait.net/ के माध्यम से, विशेष रूप से http://jsolait.net/browser/trunk/jsolait/lib/codecs.js) के लिए कार्यों का उल्लेख करता है।

+0

आप महोदय ने लगभग अपना दिन बचा लिया है! ग्रेट लाइब्रेरी, हालांकि बेस 64 एन्कोडर lzw एन्कोडेड स्ट्रिंग एन्कोडिंग पर उत्सुक नहीं था। – bennedich

+0

मुझे एक विस्तारित बेस 64 एन्कोडर/डिकोडर मिला जो काम करता है: http://www.webtoolkit.info/javascript-base64.html। Lzw-en-/decoder के साथ संयोजन में आप सभी कार्यों से जुड़े हुए हैं। आपकी सहायताके लिए धन्यवाद! – bennedich

+3

पृष्ठ नहीं मिला - womp womp –

1

आप यूआरएल पर बहुत अधिक संपीड़न पाने के लिए संघर्ष करेंगे, वे बहुत कम हैं और हफमैन/एलजेडब्लूडब्ल्यू स्टाइल एल्गोरिदम से ज्यादा लाभ पाने के लिए पर्याप्त अनावश्यक जानकारी नहीं है। अर्थात धोखा -

आप संभव URL में अंतरिक्ष पर कमी है, तो आप मुश्किल क्लाइंट पर विस्तार के लिए यूआरएल के कुछ हिस्सों कोड (उदा सभी सामग्री फ़ोल्डरों के एक ही सेट में हो जाता है)।

+0

संपीड़ित करने के लिए HTML कोड कई हजार वर्ण होंगे और समान वर्णों के बहुत सारे होंगे। मुझे विश्वास है/आशा है कि संपीड़न एक महत्वपूर्ण अंतर करेगा। – bennedich

+1

आह ठीक है - तो वे वास्तव में थोड़े लंबे हैं! एक अन्य विचार - यदि आप सुनिश्चित करते हैं कि एचटीएमएल दस्तावेज़ों (यानी आईआईएस के माध्यम से) के लिए जीजेआईपी संपीड़न चालू है तो आप पूरे एचटीएमएल दस्तावेज़ के लिए वैसे भी संपीड़न प्राप्त कर रहे हैं। उस स्थिति में आप एनकोड करने से पहले यूआरएल को संपीड़ित कर रहे हैं और उन्हें एचटीएमएल अनावश्यक में डाल दिया है? जेएस में ऐसा करने के बजाए ब्राउज़र को कोड में डिकंप्रेशन करने दें, यह काफी तेज़ हो सकता है। –

+0

क्षमा करें मैं अभी तक पूरी तरह से आपका अनुसरण नहीं कर रहा हूं। मैंने बस जीजेआईपी के बारे में पढ़ा है और यह सिर्फ एलजेडब्लूडब्ल्यू की तुलना में बेहतर विकल्प की तरह लगता है। ब्राउज़र में जीजेआईपी एन-डिकोडिंग के लिए कुछ मूल समर्थन है? क्या एक GZIP होगा: एड स्ट्रिंग सीधे यूआरएल में डालने के लिए सुरक्षित होगी? – bennedich