क्या गीथब का उपयोग जावास्क्रिप्ट पुस्तकालयों के लिए सीडीएन के रूप में किया जाना चाहिए? [बन्द है]


94

अपने स्वयं के सर्वर के बजाय एक CDN से जावास्क्रिप्ट पुस्तकालयों की सेवा जबरदस्त फायदे के साथ आता है। आपके सर्वर के लिए कम काम, सीडीएन के लिए आपके सर्वर की तुलना में उपयोगकर्ता के पास एक कॉपी होने की संभावना है, लेकिन सबसे महत्वपूर्ण यह एक अच्छा मौका है कि आपके उपयोगकर्ता का ब्राउज़र पहले से ही उस URL से कैश हो चुका है। पिछले एक का मतलब हर किसी के लिए कम कुल काम है, इसलिए यह स्पष्ट रूप से चारों ओर एक जीत है, और अधिक संभावना है कि हम (डेवलपर्स) सीडीएवी पर भरोसा करते हैं ताकि हमारी जावास्क्रिप्ट की सेवा की जा सके।

लेकिन लोकप्रिय जावास्क्रिप्ट सीडीएन (गूगल, माइक्रोसॉफ्ट, अन्य?) केवल फाइलों की एक छोटी संख्या की मेजबानी करते हैं। दूसरों के लिए हमारे पास उन्हें स्वयं होस्ट करने का विकल्प है, या ... एक प्रकार के सीडीएन के रूप में स्रोत नियंत्रण सर्वर का उपयोग करना। यह संभावना नहीं है कि गितुब या इसी तरह की वैश्विक रूप से सेवा के लिए अनुकूलित भौगोलिक रूप से वितरित फ़ाइलों का कैश है। लेकिन अगर यह आम बात है, तो एक अच्छा मौका है कि उपयोगकर्ता के ब्राउज़र में यह कैश होगा। हमारे सर्वर से गिटब तक ऑफ-लोडिंग कार्य का तर्क केवल मान्य है अगर जीथब ने स्वेच्छा से ऐसा करने के लिए स्वेच्छा से किया है।

तो, क्या यह आम बात है? क्या हमें ऐसा करने के लिए एक-दूसरे को प्रोत्साहित करना चाहिए? क्या जिठुब मन करता है? क्या उनके पास एक आधिकारिक नीति है?


5
यदि लेखक अपनी फ़ाइल संरचना को फिर से व्यवस्थित करता है तो क्या होता है? यह सैकड़ों वेबसाइटों के टूटने पर उसका समस्या कोड नहीं है।
रेयनोस

2
@ रेयानोस यदि आप गिटहब रेपो के "लेखक" हैं तो आप परिवर्तनों को नियंत्रित करते हैं।
क्रिस जैकब

2
@ क्रिसजैकोब यही बात है। अगर मैं अपनी खुद की फ़ाइल संरचना को बदलता हूं तो यह मेरी समस्या नहीं है कि कोड के एक टुकड़े पर आपका संकेत है जो अब मौजूद नहीं है।
रेयानोस

5
आप त्वरित डेमो के लिए किसी के साथ वर्क-इन-प्रगति HTML, जावास्क्रिप्ट, या सीएसएस साझा करने के लिए rawgithub.com का उपयोग कर सकते हैं , या शायद इसे jsPerf परीक्षण में उपयोग करने के लिए।
जियोवन्नी कैप्पेलोट्टो

सवाल फिर से खोलना चाहिए क्योंकि @GiovanniCappellotto की उपरोक्त टिप्पणी में अब एक सही उत्तर है।
supersharp

जवाबों:


93

यदि आपको प्रदर्शन या IE9 संगतता की परवाह है तो आपको जावास्क्रिप्ट फ़ाइलों के लिए ऐसा नहीं करना चाहिए।

GitHub अपनी "कच्ची" फाइलों को भविष्य में समाप्त होने वाली हेडर के साथ सेवा नहीं देता है। क्रॉस-साइट कैशिंग की संभावना के बिना, आप अपने जावास्क्रिप्ट को होस्ट करने के लिए सार्वजनिक सीडीएन का उपयोग करने का सबसे बड़ा लाभ खो देते हैं। वास्तव में, एक CDN के रूप में GitHub का उपयोग करना फ़ाइल के लिए प्रत्येक उपयोगकर्ता के पहले अनुरोध के बाद (अपने सर्वर पर कैशिंग को सही तरीके से कॉन्फ़िगर करना मानकर) केवल अपने सर्वर पर फ़ाइलों की मेजबानी करने की तुलना में धीमा होगा।

एक अन्य समस्या यह है कि गिटहब "कच्चे" फाइलों को सामग्री-प्रकार के हेडर के साथ सेवा नहीं करता है जो फ़ाइल के वास्तविक माइम प्रकार से मेल खाता है। IE9 (और शायद अन्य ब्राउज़र / प्रॉक्सी / फायरवॉल / आदि) में, जावास्क्रिप्ट फाइलें जो सही सामग्री-प्रकार के साथ नहीं दी जाती हैं, डिफ़ॉल्ट रूप से अवरुद्ध होती हैं। आप उदाहरण के लिए, ब्लॉकयूआई डेमो पेज पर कार्रवाई में देख सकते हैं:

यहां छवि विवरण दर्ज करें


10
इसके अलावा ... "जब आप उस तरह की कच्ची फाइल का अनुरोध करते हैं, तो आप सीधे फाइल सिस्टम से फाइल को एक्सेस नहीं कर रहे हैं! आप एप्लिकेशन कोड की परतों से भी गुजर रहे हैं, जो निश्चित रूप से आपकी साइट को धीमा कर देगा। ऐसा न करें।" इसके बजाय, एक जीएच-पृष्ठ शाखा बनाएं, और इसे वहां से लोड करें "- viatropos.com/blog/github-as-a-cdn
क्रिस जैकब

RawGit उचित सामग्री-प्रकार के हेडर के साथ सीधे GitHub से कच्ची फाइलें परोसता है। URL में एक विशिष्ट टैग या प्रतिबद्ध हैश का उपयोग करें (शाखा नहीं)। फ़ाइलें URL के आधार पर स्थायी रूप से कैश की जाती हैं। rawgit.com
केरेम बेदोअन

17

GitHub "कच्ची" फ़ाइलों से लिंक करने पर डेव वार्ड के उत्तर द्वारा उल्लिखित कुछ मुद्दे हैं ।

मेरा सुझाव है कि आप एक विकल्प के रूप में GitHub पेज को देखें।

इस लेख को पढ़ें:
एक CDN के रूप में GitHub GitHub Pages के साथ अपने Javascripts, Stylesheets और Web Assets को कैश करें।


11

यह हाल ही में github के समर्थन मंचों में पूछा गया था , और आधिकारिक जवाब था कि यह ठीक है।

ऐसा कहने के बाद, मैं अन्य उत्तरों से सहमत हूं: जीथब को वास्तव में सीडीएन होने का मतलब नहीं था , जबकि Google और Microsoft के पास इसके लिए विशिष्ट बुनियादी ढांचा है।


7
स्पष्ट करना। वह समर्थन फोरम प्रतिक्रिया उस लेख के संबंध में है जिसे मैंने अपने उत्तर में जोड़ा है (GitHub Pages as CDN - GitHub "कच्ची" फाइलें नहीं): stackoverflow.com/questions/5502540/… )।
क्रिस जैकब

10

यह प्रोटोटाइप / व्यक्तिगत सामान के लिए ठीक है, लेकिन उत्पादन के लिए मैं इसे देखूंगा:

http://www.cdnjs.com/

http://cachedcommons.org/ - अब उपलब्ध नहीं है


मुझे आशा है कि आप जानते हैं कि CakedCommons.com सिर्फ github.com से सेवा कर रहा है
ocodo

लेकिन url कैश्ड कॉमन्स cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js पर इंगित करने लगते हैं , एक प्रॉक्सी हो सकता है जिसका मुझे अनुमान है।
meleyal

क्षमा करें, मेरा मतलब यह है कि सीडीएन के रूप में जीथब का उपयोग करने के बारे में पुरानी जानकारी अब लागू नहीं होती है, जाहिरा तौर पर, और यह सब अच्छा है। भविष्य में संभव उपलब्धता के मुद्दों के अलावा, इससे बचने के लिए एक पुस्तकालय की आवश्यकता है।
ओसोडो

2
लगता है कि
गितुब से जुड़ना

1
वास्तव में यह कोई समस्या नहीं है, अगर आप एक सीडीएन के रूप में गीथहब आधारित संसाधन का उपयोग करने जा रहे हैं, तो सुनिश्चित करें कि इसे स्थैतिक पृष्ठों की साइट (अब GitHub.io) के हिस्से के रूप में होस्ट किया गया है - यह है कि आपको इसे कैसे करना चाहिए था वैसे पहले स्थान पर।
ओसोडो

-2

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

लेकिन फिर भी - Google और MS ने jQuery और jQuery के टेम्प्लेट के लिए जगह का नियम बनाया है - इसलिए मैं उनके लिए इसका उपयोग करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.