2010-04-30 8 views
21

सीडीएन (Google) का उपयोग करके स्क्रिप्ट्स को शामिल करने या वेबसाइट की रूट में उन्हें स्थानीय रूप से संग्रहीत करने के लिए तेज़ क्या है?सीडीएन (Google) का उपयोग करके स्क्रिप्ट्स को शामिल करने के लिए तेज़ क्या है या वेबसाइट की रूट में उन्हें स्थानीय रूप से संग्रहीत करना?

उत्तर

5

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

यह आपकी साइट से बहुत सारी बैंडविड्थ ऑफ़लोड करेगा, हालांकि आप फ़ाइल को बनाए रखने के लिए किसी तृतीय पक्ष की स्थिरता पर भरोसा करते हैं।

4

एक गूगल CDN :-)
1) देखने का कैश बिंदु से अनुकूलित
2) उपयोगकर्ता अधिक इष्टतम CDN नोड से संसाधन प्राप्त करता है (हालांकि मैं गूगल होने मुद्दों किसी भी समय जल्दी ही नहीं दिख रहा है)

33

यदि आप इंटरनेट jQuery साइट के लिए कोर jQuery लाइब्रेरीज़, use the google CDN का मतलब है (एक आंतरिक के विपरीत)।

  • अधिक सर्वर
  • बैंडविड्थ (आप के लिए भुगतान नहीं करते हैं)
  • जियोलोकेशन (कम प्रतिक्रिया समय)
  • :

    CDN निम्न लाभ आप के साथ प्रतिस्पर्धा करने के लिए कठिन मिल जाएगा है

  • अतिरिक्तता
  • अनुकूलित कैशिंग सेटिंग्स
  • संभावना उपयोगकर्ता पहले से ही है वहाँ
  • parallelized डाउनलोड से फ़ाइल कैश की गई, उपयोगकर्ता एक ही समय

पर अपनी साइट से अन्य सामग्री प्राप्त कर सकते हैं हालांकि आप कैश हेडर कॉन्फ़िगर कर सकते हैं, जैसे वे करते हैं, तो आप शायद काम नहीं कर सकते फ़ाइल तेज है। कहा जा रहा है, पुस्तकालय/सीडीएन पहेली का केवल एक हिस्सा है। आपके पास विविध प्लगइन्स और कोड भी minified, combined और served via gzip होना चाहिए।

+1

अच्छा मुद्दा यह है कि का उपयोग पहले से ही से पहले :) –

+0

बहुत बढ़िया जवाब निक फ़ाइल, कि एक के बारे में सोचा नहीं कैश की गई हो, लेकिन क्या होगा अगर सीडीएन-सेवारत पुस्तकालयों को अद्यतन किया जाता है और अचानक यह लेआउट या इसी तरह टूट जाता है? क्या वह सुरक्षा उल्लंघन नहीं है? – dzhi

+5

@purpler - आपके पास वहां नियंत्रण है, उदाहरण के लिए आप एक विशिष्ट संस्करण का संदर्भ दे सकते हैं जो बदलेगा नहीं, उदाहरण के लिए 'http: // ajax.googleapis.com/AJAX/libs/jquery/1.4.2/jquery.js', या नवीनतम बिंदु/मामूली संस्करण: 'http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js', या नवीनतम प्रमुख संस्करण: 'http: // ajax.googleapis.com/AJAX/libs/jquery/1/jquery.js' (सुनिश्चित करें कि 'jquery.min.js' का उपयोग करना सुनिश्चित करें) उत्पादन!) –

1

मैं दूसरों के कारणों के कारण Google की सीडीएन कहूंगा।

हालांकि, यदि आपका लक्षित बाजार आपके सर्वर के नजदीकी है, तो यह आपके सर्वर से सर्वर को सर्वर करना बेहतर हो सकता है।

कहें, उदाहरण के लिए, आपके पास ऑरलैंडोफ्लोरिडाPeopleOnly.com/ के लिए एक साइट है। यदि आपका सर्वर ऑरलैंडो, फ्लोरिडा में होस्ट किया गया है और Google के सबसे नज़दीकी सामग्री वितरण सर्वर मियामी, फ्लोरिडा और अटलांटा, जॉर्जिया (जो सच है) में हैं, तो आपका सर्वर संभवतया तेज़ हो सकता है यदि आगंतुक के पास पहले से कैश की गई प्रतिलिपि नहीं है Google सीडीएन से फाइल का।

याद रखें, अगर आप अपने आगंतुकों को स्थिर सामग्री प्रदान करते हैं तो आपका सर्वर उप-डोमेन या अन्य माध्यमों का उपयोग करके डाउनलोड को समानांतर करने का प्रयास करता है। और भलाई के लिए ... स्थिर सामग्री के लिए कुकीज़ स्थानांतरित नहीं करते हैं।

मुझे यकीन नहीं है कि यह स्रोत कितना विश्वसनीय है: Google data centers। तो जरूरी नहीं कि इस पर भरोसा करें।

0

यह ध्यान देने योग्य हो सकता है कि विजुअल स्टूडियो में Google के सीडीएन के लिए इंटेलिजेंस के साथ समस्याएं हैं।माइक्रोसॉफ्ट में एक सीडीएन भी है जो इंटेलिसेंस को सही तरीके से काम करने की अनुमति देता है। लेकिन हाँ, एक सीडीएन का उपयोग करें।

3

दुर्भाग्यवश अध्ययनों ने हाल ही में दिखाया है कि गुगल सीडीएन वास्तव में प्रदर्शन में बाधा डालता है।

Google के AJAX लाइब्रेरी एपीआई ने साझा साझा कैश प्रदान करके सभी भाग लेने वाली वेबसाइटों के प्रदर्शन को बेहतर बनाने के लिए नेटवर्क प्रभावों का उपयोग करने का प्रयास किया। हालांकि हाल के शोध में पता चला है कि बहुत कम लोग इसके लिए नेटवर्क का उपयोग महत्वपूर्ण द्रव्यमान को मारने और वास्तव में वेब प्रदर्शन में सुधार करने के लिए करते हैं। वर्तमान में नेटवर्क का उपयोग करने में ओवरहेड का मतलब है कि Google के AJAX लाइब्रेरी एपीआई का उपयोग वास्तव में प्रदर्शन को कम करता है। आपको जावास्क्रिप्ट फ़ाइल को स्थानीय रूप से होस्ट करना चाहिए। यह आपके बैंडविड्थ खपत को बढ़ाएगा लेकिन पेज लोड की गति में सुधार करेगा। Zoompf.com प्रदर्शन रिपोर्ट नोट से।

यहाँ देखें भी Should You Use JavaScript Library CDNs?

+0

क्या मुझे कुछ प्रतिक्रिया मिल सकती है कि यह नकारात्मक क्यों है? – Duncan

+0

यह सही नहीं लगता है। Google के सीडीएन सर्वर उपयोगकर्ता की तुलना में बहुत तेज़ और करीब हैं जो आप स्वयं होस्ट कर सकते हैं। यहां दूसरी बात है - ब्राउज़र आपके स्वयं के सर्वर से जेएस के साथ * समांतर * में एक सीडीएन से jQuery डाउनलोड करेगा। दोनों अनुरोध समानांतर में डाउनलोड होंगे, लेकिन फिर भी अनुक्रमिक रूप से निष्पादित किए जाएंगे। इसलिए मुझे नहीं पता कि यह कभी भी अपने सर्वर पर jQuery को होस्ट करने से धीमा क्यों होगा, या इससे भी बदतर, इसे एक विशाल जेएस फ़ाइल में संकलित करना होगा। और यह सबसे बुरी स्थिति के लिए है, जहां उपयोगकर्ता के पास कुछ भी कैश नहीं होता है। – ndbroadbent

1

इसकी उन्हें localStorage/वेब भंडारण में स्टोर करने के लिए भी तेजी से है। मैं एक छोटे से पुस्तकालय बनाया है कि ऐसा करने के लिए और परिणाम CDN से काफी समझाने

  • लोड हो रहा है jQuery हैं: क्रोम 268ms, फ़ायर्फ़ॉक्स: क्रोम 47ms, फ़ायर्फ़ॉक्स: localStorage से 200 मि.से
  • लोड हो रहा है jQuery 14ms

आप https://github.com/webpgr/cached-webpgr.js पर यह छोटे है कोड की जाँच करें और आप पढ़ सकते हैं और एक तख्तापलट के भीतर के सभी समझ सकते हैं मिनटों का ली

यहां एक पूर्ण उदाहरण है जिसका उपयोग कैसे किया जाए।

पूरा पुस्तकालय:

function _cacheScript(c,d,e){var a=new XMLHttpRequest;a.onreadystatechange=function(){4==a.readyState&&(200==a.status?localStorage.setItem(c,JSON.stringify({content:a.responseText,version:d})):console.warn("error loading "+e))};a.open("GET",e,!0);a.send()}function _loadScript(c,d,e,a){var b=document.createElement("script");b.readyState?b.onreadystatechange=function(){if("loaded"==b.readyState||"complete"==b.readyState)b.onreadystatechange=null,_cacheScript(d,e,c),a&&a()}:b.onload=function(){_cacheScript(d,e,c);a&&a()};b.setAttribute("src",c);document.getElementsByTagName("head")[0].appendChild(b)}function _injectScript(c,d,e,a){var b=document.createElement("script");b.type="text/javascript";c=JSON.parse(c);var f=document.createTextNode(c.content);b.appendChild(f);document.getElementsByTagName("head")[0].appendChild(b);c.version!=e&&localStorage.removeItem(d);a&&a()}function requireScript(c,d,e,a){var b=localStorage.getItem(c);null==b?_loadScript(e,c,d,a):_injectScript(b,c,d,a)}; 

पुस्तकालय कॉलिंग

requireScript('jquery', '1.11.2', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', function(){ 
    requireScript('examplejs', '0.0.3', 'example.js'); 
}); 
+0

मुझे नहीं पता कि आप ऐसा क्यों करेंगे, इससे ज्यादा समझ नहीं आती है। सीडीएन से एक स्क्रिप्ट लोड करना मतलब है कि यह ब्राउज़र द्वारा स्वचालित रूप से कैश किया जाता है, इसलिए आप स्थानीय स्टोरेज के साथ ही वही कर रहे हैं। क्यों न केवल ब्राउज़र कैश का उपयोग करें, जो पहले से ही तत्काल है? – ndbroadbent

+1

https://addyosmani.com/basket.js/ पर "क्यों स्थानीय स्टोरेज" एक दिलचस्प पढ़ा है। मुझे लगता है कि यह समझ में आ सकता है क्योंकि आप किसी सर्वर से "304 संशोधित नहीं" प्रतिक्रिया छोड़ सकते हैं। – ndbroadbent

+0

मैं इस बात की सराहना करता हूं कि इस प्रतिक्रिया में दावे का समर्थन करने के लिए समय लोड हो रहा है, और मैं देखना चाहता हूं कि किसी के पास विरोधी प्रेरणा की संख्या है या नहीं। कोई कैसे अस्वीकार करेगा कि ये संख्या वास्तविक सहसंबंध का संकेतक हैं? हम उन संख्याओं को अप्रासंगिक या स्वतंत्र गति से स्वतंत्र क्यों करेंगे जो हम बहस कर रहे हैं? – mrmaclean89

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

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