2011-09-16 30 views
39

हमारे वेब पृष्ठों के प्रदर्शन को बेहतर बनाने के लिए, हमें CDN एस का उपयोग करने के लिए .js फ़ाइलों को हमारे वेब पृष्ठों पर सेवा देने की अनुशंसा की जाती है। यह समझ आता है।बंडलिंग। जेएस फाइल बनाम सीडीएन

इसके अलावा, हमें लोड पर सर्वर पर किए जा रहे अनुरोधों की संख्या को कम करने के लिए हमारी .js फ़ाइलों को बंडल करने की अनुशंसा की जाती है।

इसलिए, हमें बैठने और सीडीएन या बंडल .js फ़ाइलों का उपयोग करने के बीच निर्णय लेने की आवश्यकता है।

पेशेवर और विपक्ष क्या हैं? कौन सा अधिक समझ में आता है?

+0

एक CDN * का प्रयोग केवल * .js फ़ाइलों के लिए एक अजीब निर्णय की तरह लगता है। :) – bzlm

+2

@bzlm क्या यह है? बहुत से लोगों के लिए मुश्किल नहीं है। – tugberk

+0

आपका मतलब क्या है? जब तक आपका एप्लिकेशन ज्यादातर .js फ़ाइलों से बना नहीं जाता है, यह वही नहीं है जो विलंबता और धीमेपन का कारण बनता है, क्योंकि वे क्लाइंट-साइड पर विलय, संपीड़न और कैश करना इतना आसान हैं। – bzlm

उत्तर

13

आप उन्हें और बंडल क्यों नहीं कर सकते हैं उन्हें सीडीएन रखें? यह शायद एक या दूसरे का फैसला होना चाहिए?

यदि आप में एक या दूसरे को चुनने के लिए है, तो यह इस बात पर निर्भर करता है कि आप कितने .js फ़ाइलों को शामिल कर रहे हैं। फ़ाइलों की एक छोटी संख्या के लिए, मैं सुझाव है कि एक CDN, तेज किया जाएगा जहां-के रूप में फाइल की एक बड़ी संख्या, .js फ़ाइलों का एक बंडल के लिए निश्चित रूप से तेज होगा चाहते। जहां स्विच-ओवर होगा, आपके साथ प्रयोग करने के लिए कुछ है।

+0

तब विकास चरण के बारे में क्या? यह आपकी परियोजना को कसकर जोड़ता है। – tugberk

+3

@tugberk: यह ऐसा काम नहीं करता है। जब आप ऐप जारी करते हैं तो आप एक बिल्ड स्क्रिप्ट लिखते हैं जो जावास्क्रिप्ट फ़ाइलों को एकसाथ जोड़ती है। उसी चरण में, आप फ़ाइलों को * न्यूनतम भी कर सकते हैं, जो आपकी जावास्क्रिप्ट फ़ाइलों के आकार को और कम कर देगा। – Matt

+0

इसलिए, आपको इस काम को संभालने की प्रक्रिया की आवश्यकता है। हम्म, इसे एक विचार की आवश्यकता है लेकिन बहुत समझ में आता है। – tugberk

12

मेरा उत्तर: दोनों। उन्हें बंडल करें और उन्हें एक सीडीएन पर रखें।

ऐसा करने का नकारात्मक हिस्सा? निर्भर करता है। आप प्रक्रिया को किस तरह बनाते हैं? क्या आप आसानी से बंडलिंग और कमीशन को स्वचालित कर सकते हैं? क्या आप याहू यूयूआई या Google क्लोजर या कुछ और उपयोग कर रहे हैं?

इसके अलावा, यदि बहुत सारे जीयूआई आश्रित jQuery हैं तो लगातार बदलते तत्व/प्रभाव/सीएसएस के कारण घर्षण खपत हो सकती है।

परीक्षण भी महत्वपूर्ण है क्योंकि संभावित खनन क्विर्क के कारण।

नीचे पंक्ति: 5 जावास्क्रिप्ट फ़ाइलें सुरक्षित रूप से 1 फ़ाइल में बंडल === 4 कम अनुरोध।

एक पृष्ठ केवल सादे पुराने एचटीएमएल और एक बाहरी जावास्क्रिप्ट संदर्भ === 2 आपके सर्वर से अनुरोध करता है। हालांकि, एक सादे पुराने एचटीएमएल वाला एक पृष्ठ और एक सीडीएन === 1 आपके सर्वर पर अनुरोध पर एक बाहरी जावास्क्रिप्ट संदर्भ।

वर्तमान में हम Google क्लोजर टूल का उपयोग कर रहे हैं। Google Closure Inspector निम्नलिखित के साथ मदद करता है:

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

+0

उन्हें एक साथ बंडल करना मेरे लिए इतना जटिल नहीं है। मुझे क्या लगता है कि मैं उन्हें कहां रख सकता हूं। क्या आप कोई अच्छा प्रदाता जानते हैं? इसके अलावा, मेरे पास अपना स्वयं का सीडीएन है। यह संभालती कैश-नियंत्रण, यदि संशोधित के बाद से, तो कोई मिलान नहीं वाले हेडर। लेकिन कोई जीईओ समर्थन नहीं है। – tugberk

+0

मैं रैकस्पेस बादल फ़ाइलें उपयोग कर रहे हैं - शून्य मुद्दों और अकामाई CDN के साथ एकीकृत - http://www.rackspace.com/cloud/cloud_hosting_products/files/ छह महीने के लिए। –

0

जैसा कि अन्य ने पहले से ही कहा है, उत्तर दोनों संभव है। बंडल (और minifying) आपके उपयोगकर्ताओं को लाभ देता है क्योंकि यह पृष्ठ के वजन को कम करता है। सीडीएन आपके सर्वर को लाभ देता है क्योंकि आप काम को ऑफ़लोड कर रहे हैं। आम तौर पर, आपको तब तक ऑप्टिमाइज़ करने की आवश्यकता नहीं है जब तक कि आपने प्रदर्शन समस्याओं को न देखा हो या आपके पास कुछ भी बेहतर नहीं है।

0

कुछ चीजें आप के बारे में सोचने की जरूरत है ...

कैसे जे एस के ज्यादा आप कितना बाद में जब तक विलंब कर सकते हैं आप पृष्ठ लोड के शुरू में लोड करने के लिए की जरूरत है, और?

यदि आप जेएस लोड करने में देरी कर सकते हैं (उदाहरण के लिए इसे पृष्ठ के निचले भाग में रखें) या Google Analytics के रूप में इसे असीमित रूप से लोड करें, तो आप यूआई थ्रेड को अवरुद्ध करने वाले जेएस व्यय को डाउनलोड करने की अवधि को कम कर देंगे।

काम कैसे जे एस का भार विभाजित किया जा सकता करने के बाद, मैं विभिन्न जे एस फ़ाइलों का मर्ज/कम करें साथ सौदा चाहते हैं - HTTP नीचे काटने अनुरोध प्रदर्शन में सुधार के लिए महत्वपूर्ण है।

फिर सीडीएन पर जाने के लिए देखें और सुनिश्चित करें कि सीडीएन जेएस सामग्री को संपीड़ित कर सकता है और आपको हेडर सेट करने की इजाजत देता है ताकि यह "हमेशा के लिए कैश किया जा सके" (यदि आप हमेशा के लिए कैश करते हैं तो आपको फ़ाइलों को संस्करण करने की आवश्यकता होगी)। एक सीडीएन विलंबता को कम करने में मदद करता है लेकिन cookieless

अन्य चीज जो आप विचार करना चाहते हैं, स्थिर सामग्री के लिए एक अलग डोमेन स्थापित कर रहा है, इसे अपने सर्वर पर इंगित करें, जबकि आप चीजों को हल करते हैं और फिर यदि यह सार्थक लग रहा है तो एक सीडीएन पर स्विच करें।

एंडी