2012-12-02 14 views
5

मैं जेएसएसएचए 1.3.1 का उपयोग कर रहा हूं जो मैं downloaded here और अपने लोकहोस्ट पर प्रोजेक्ट सीखने में उपयोग किया जाता हूं। यह प्रति मैं रिमोट की चर्चा करते हुए इस प्रकार से मिल की तुलना में एक अलग परिणाम देता है:स्थानीय बनाम रिमोट जावास्क्रिप्ट पुस्तकालयों सहित

<script src="https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js"></script> 

दूरदराज के प्रति मेरे लिए अच्छी तरह से काम करता है, अब, @Andreas here द्वारा इस उत्कृष्ट जवाब देने के लिए धन्यवाद।

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

+0

डाउनलोड लिंक था पिछले 4 महीनों पहले अपडेट किया गया है, जबकि भंडार समय की उस अवधि में गतिविधि के बहुत सारे किया गया है http://stackoverflow.com/questions/5502540/should-github-be-used-as -a-cdn-for-जावास्क्रिप्ट-पुस्तकालय – dm03514

+0

यदि आप गिटहब को हॉटलिंक करने वाले हैं, तो आपको पहले gh-pages शाखा में फ़ाइलों को आजमाएं, वे नवीनतम स्थिर संस्करण होने की संभावना है। इस मामले में, यह http://caligatio.github.com/jsSHA/sha.js – livibetter

+0

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

उत्तर

8

यदि आपका आवेदन डब्ल्यूडब्ल्यूडब्ल्यू पर उपलब्ध है, तो आपको एक प्रसिद्ध बाहरी यूआरएल का उपयोग करने पर विचार करना चाहिए।


<script type="text/javascript" 
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" 
</script> 

नीचे इस उदाहरण गूगल के सर्वर से jQuery 1.8.0 के minified संस्करण हो जाता है।


  • लाभ इस विधि द्वारा प्राप्त कैशिंग से आता है:

    • आप पहली यात्रा एक संभावित उपयोगकर्ता धीमी और निराशाजनक होने के लिए अपनी वेबसाइट के लिए बनाता है नहीं करना चाहती। यदि आपका पहली बार विज़िटर मेरी साइट पर गया है जो jQuery के लिए इस यूआरएल का उपयोग करता है, तो उसके ब्राउजर ने शायद इसे कैश किया होगा, इसलिए इसे लोड करने की आवश्यकता नहीं होगी।

    • अपरिवर्तनीय संस्करण संसाधनों (jquery/current जैसे कुछ की बजाय jquery/1.8.0) का उपयोग करके डेवलपर्स को उनके उत्पादन कोड में ब्रेकिंग परिवर्तनों को ट्रैक करने में मदद नहीं करता है और यह सुनिश्चित करता है कि इन संसाधनों को कैश किया जा सके।

    • यदि संसाधन डाउनलोड किया जाना है और यूआरएल सीडीएन पर होस्ट किया गया है तो आपको कम विलंबता होने की संभावना है क्योंकि संसाधन शायद उपयोगकर्ता के नेटवर्क के करीब सर्वर से लोड हो जाएगा। उदाहरण में यूआरएल Google होस्टेड लाइब्रेरीज़ पर होस्ट किया गया है जो एक सीडीएन है। अधिक जानकारी के लिए https://developers.google.com/speed/libraries/devguide देखें।

  • अक्सर इस तरह के विचार विमर्श में देखा एक और तर्क है कि जब संसाधन को डाउनलोड करने की है, तो आप बेहतर क्लाइंट साइड संसाधन लोड हो रहा है समानांतरवाद प्राप्त करने में सक्षम हो सकता है अगर संसाधन 10 के साथ एक साथ अपने सर्वर पर नहीं है आपके पृष्ठ में अधिक संसाधन शामिल हैं क्योंकि ब्राउज़र स्वयं को एक ही संख्या के रूप में संसाधनों के एक छोटे नंबर (6 या तो आधुनिक ब्राउज़र में) तक लोड करने के लिए सीमित करते हैं।

  • यदि आपका इंटरनेट-व्यापी वेब एप्लिकेशन सुरक्षा-महत्वपूर्ण है, तो आपको इसे अधिक से अधिक नियंत्रित रखना चाहिए क्योंकि आप सुरक्षित रूप से प्रबंधित कर सकते हैं (और स्थिर अपरिवर्तनीय या लगभग अपरिवर्तनीय संसाधन सुरक्षित रूप से प्रबंधित करने के लिए अपेक्षाकृत आसान हैं)।

    • मेरे बैंक की ई-बैंकिंग आवेदन जो HTTPS पर चलाता है की सेवा के लिए गूगल के HTTP सर्वर पर भरोसा करें, तो यह होगा दोनों अपनी ई-बैंकिंग आवेदन के क्लाइंट छोर भाग पर गूगल का अधिकार प्रदान कर और व्यावहारिक रूप से सभी को नष्ट होना अपने सर्वर के लिए HTTPS कनेक्शन के लाभ। बहुत कम चीजें हैं जो एक दुष्ट ग्राहक स्क्रिप्ट ...

  • आपके आवेदन स्थानीय स्तर पर पहुंचा जा सकता है, तो आप शायद यह दोनों प्रदर्शन के लिए अपने आवेदन में शामिल करना चाहिए नहीं कर सकते हैं (अपने सर्वर के लिए उपयोग किया जाना चाहिए विलंबता और बैंडविड्थ के संदर्भ में कुछ रिमोट सर्वर तक पहुंचने से तेज़) और विश्वसनीयता कारण (आप बाहरी इंटरनेट कनेक्शन और रिमोट सर्वर पर निर्भर और चल रहे हैं) पर भरोसा नहीं कर रहे हैं।
3

यह जेएस लाइब्रेरी में 'हॉटलिंकिंग' से खुश है या नहीं, यह नीचे आता है।

विशिष्ट यूआरएल है कि आप पोस्ट किया है के बारे में,

https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js 

मुझे लगता है कि संदर्भित से सावधान रहना होगा। यह उनके स्रोत कोड की मास्टर शाखा है, इसमें किसी भी समय ब्रेकिंग बदलाव शामिल हो सकते हैं। वे अपने कोडबेस को स्थानांतरित करने और पुन: व्यवस्थित करने का भी निर्णय ले सकते हैं, इस मामले में आपका आवेदन टूट जाएगा क्योंकि ऊपर यूआरएल 404 होगा।

बेहतर समाधान वास्तव में लाइब्रेरी के एक विशिष्ट संस्करण का संदर्भ दे रहा है। यह सुनिश्चित करता है कि आपका आवेदन व्यवहार करता है, और जहां तक ​​जेएसएसएचए लाइब्रेरी का संबंध है, अपेक्षित और ज्ञात तरीके से व्यवहार करना जारी रखेगा।

ऐसा करने के कुछ तरीके हैं। आप एक विशिष्ट, निश्चित URL है, जो स्पष्ट रूप से एक संस्करण

http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js 

निर्दिष्ट करता है संदर्भित कर सकते हैं क्योंकि इसके टैग किए गए (3.0.2), आप थोड़ा सुरक्षित हैं, लेकिन आप अभी भी स्रोत नियंत्रण संदर्भित कर रहे हैं। यदि कोई मौजूद है तो यह वास्तव में सीडीएन के माध्यम से किया जाना चाहिए। मुझे विश्वास नहीं है कि googlecode.com यूआरएल एक सीडीएन यूआरएल है (मैं गलत हो सकता है)। यह निश्चित रूप से एक जेएस लाइब्रेरी का संदर्भ देने के लिए एक उचित सीडीएन या बाहरी लिंक का उपयोग करने के लिए एक आम प्रथा है और आप example of this on the JQuery page देख सकते हैं, लेकिन यह अक्सर पृष्ठ प्रदर्शन संवर्धन के हिस्से के रूप में किया जाता है। एक सीडीएन उपयोगकर्ता के भौगोलिक स्थान के लिए अनुकूलित किया जाता है, इसलिए सीडीएन (मुख्य सर्वर के विपरीत) पर किसी भी सामग्री का संदर्भ तेजी से कार्य किया जाएगा। इसमें उपयोगकर्ता अनुभव लाभ हैं। यह उपयोगी है अगर आपके उपयोगकर्ताबेस के लिए पृष्ठ लोड समय महत्वपूर्ण हैं।

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

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