2012-07-31 24 views
31

मैं उस साइट के लिए बेस 64 एन्कोडेड छवियों का उपयोग करने के बारे में सोच रहा हूं, जिसे मैं लोड समय अनुकूलित करने के लिए काम कर रहा हूं।बेस 64 एन्कोडेड छवियों का उपयोग करने के फायदे और नुकसान

वैसे भी, शुरू होने से पहले, मैं सोच रहा था: ऐसा करने के फायदे और नुकसान क्या हैं?

इस समय, मुझे कोई नुकसान नहीं दिख रहा है, लेकिन मैंने यह भी देखा कि यह एक तकनीक नहीं है जो अक्सर प्रयोग की जाती है और इससे मुझे आश्चर्य होता है कि मुझे कुछ याद नहीं आया।

विषय को Google के बाद मुझे कुछ भी स्पष्ट नहीं मिला, इसलिए मैंने यहां पूछने का फैसला किया।

+2

सुनिश्चित नहीं है कि आप अनुकूलित करने का प्रयास कर रहे हैं। क्या आपको लगता है कि बेस 64 पीएनजी या जेपीईजी से अधिक संपीड़ित हो रहा है? तार्किक रूप से, आप केवल उन छवियों के साथ समाप्त हो जाएंगे जो चार गुना बड़ा हैं, इसलिए कोई सुधार नहीं है। –

+0

उच्च छवि आकार लेकिन मैं तस्वीर पाने के लिए दूसरा अनुरोध नहीं करता हूं। एचटीएमएल के अंदर भेजा जाता है। तो फिर कोई हेडर नहीं। – zozo

+0

इसके अलावा मुझे यह उपयोगी पाया गया लेकिन मैं अभी भी सोच रहा हूं। http://davidbcalhoun.com/2011/when-to-base64-encode-images-and-when-not-to – zozo

उत्तर

27

यह बहुत छोटी छवियों के लिए केवल उपयोगी है। बेस 64 एन्कोडेड फ़ाइलें मूल से बड़ी हैं। इसका लाभ किसी अन्य कनेक्शन को खोलने और छवि के लिए सर्वर से HTTP अनुरोध करने में नहीं है। यह लाभ बहुत जल्दी खो गया है इसलिए बड़ी संख्या में बहुत कम व्यक्तिगत छवियों के लिए केवल एक फायदा है।

+0

कुछ एंटरप्राइज़ सीएमएस (रेडडॉट की तरह) को भी सीएसएस छवियों की आवश्यकता होती है जो " "- एक 4 क्लिक प्रक्रिया। आपके प्लेटफॉर्म के आधार पर यह एक समय बचा सकता है। – ArleyM

8

माइम अनुरूप Base64- एन्कोड बाइनरी डेटा की वास्तविक लंबाई आमतौर पर मूल डेटा लंबाई की 137% है, हेडर की भूमि के ऊपर की वजह से है, हालांकि बहुत ही कम संदेशों के लिए भूमि के ऊपर बहुत अधिक हो सकता है । बहुत मोटे तौर पर, बेस 64-एन्कोडेड बाइनरी डेटा का अंतिम आकार मूल डेटा आकार + 814 बाइट्स (हेडर के लिए) के 1.37 गुणा के बराबर है।

दूसरे शब्दों में, डीकोड डेटा का आकार इस फार्मूले के साथ अनुमान लगाया जा सकता:

bytes = (string_length(encoded_string) - 814)/1.37 

स्रोत: http://en.wikipedia.org/wiki/Base64#MIME

3

कमियां नीचे के रूप में पहले से ही How much faster is it to use inline/base64 images for a web site than just linking to the hard file? पर इस पोस्ट में उल्लेख कर रहे हैं में से कुछ

  • कैशिंग के अधिकांश रूपों को पीटा जाता है जो छवि को देखे जाने पर बहुत अधिक चोट पहुंचा सकता है o ften - कहते हैं, एक लोगो जो हर पृष्ठ पर प्रदर्शित होता है, जिसे आमतौर पर ब्राउज़र द्वारा कैश किया जा सकता है।
  • अधिक CPU उपयोग।
+0

कैशिंग के बारे में ... पृष्ठ को कैश किया जा सकता है।यहां नकारात्मकता हर बार डेटा की प्रसंस्करण है। – zozo

+4

सहमत हैं लेकिन लोगो के उदाहरण के मामले में साइट पर अलग-अलग और कई पेज हो सकते हैं, जिन्हें पहले देखा गया था, लेकिन इन सभी पृष्ठों पर लोगो की कैश की गई छवि को हर बार इस्तेमाल किया जा सकता है पेज का कैश –

+0

@zozo यदि पृष्ठ पर सामग्री अपडेट नहीं होती है, तो दोनों सामग्री और छवियों को डाउनलोड और फिर से पार्स करने की आवश्यकता होगी। – arve0

3

एचटीएमएल पेज का प्रतिक्रिया समय भी बढ़ेगा, क्योंकि छवियां सामान्य परिदृश्य में एसिन लोड करती हैं। यहां तक ​​कि यदि छवियां देर से लोड होती हैं तो भी आप टेक्स्ट देखना शुरू कर सकते हैं।

CDN का एक और लाभ करता है, तो केवल मीडिया CDN

कि लाभ खो जाएगा में कैश किया जा रहा है खो दिया जाएगा।

+1

क्या आपको लगता है कि अगर बेस 64 द्वारा छवि अपलोड करें? चूंकि मैं जेसन ऑब्जेक्ट के साथ भेजना चाहता हूं। –