বাহ্যিক জাভাস্ক্রিপ্ট রেফারেন্স বনাম আমার নিজস্ব অনুলিপি হোস্টিং


42

বলুন আমার কাছে একটি ওয়েব অ্যাপ্লিকেশন রয়েছে যা jQuery ব্যবহার করে। আমার ওয়েবসাইট ফাইলগুলির সাথে আমার নিজের সার্ভারে প্রয়োজনীয় জাভাস্ক্রিপ্ট ফাইলগুলি হোস্ট করা, বা jQuery এর সিডিএন-তে তাদের রেফারেন্স করার জন্য কী ভাল অনুশীলন (উদাহরণ: http://code.jquery.com/jquery-1.7.1.min.js ) ?

আমি উভয় পক্ষের পক্ষে পেশাদার দেখতে পাচ্ছি:

  • যদি এটি আমার সার্ভারে থাকে তবে এটি বাহ্যিক নির্ভরতা কম one jQuery যদি নীচে নেমে যায় বা তাদের হোস্টিং কাঠামো বা এর মতো কিছু পরিবর্তন করে, তবে আমার অ্যাপ্লিকেশনটি ব্রেক হয়ে যায়। তবে আমার মনে হয় এটি প্রায়শই ঘটবে না; এখানে প্রচুর পরিমাণে ছোট-ছোট সাইট থাকতে হবে এবং jQuery টিম তাদের এড়াতে এড়াতে চাইবে।
  • যদি এটি আমার সার্ভারে থাকে তবে এটি একটি কম বাহ্যিক রেফারেন্স যে কোনও ব্যক্তি কোনও সুরক্ষা সমস্যা কল করতে পারে
  • যদি এটি বাহ্যিকভাবে উল্লেখ করা হয়, তবে ফাইলগুলি পরিবেশন করতে আমাকে ব্যান্ডউইথ সম্পর্কে চিন্তা করতে হবে না (যদিও আমি জানি এটি এতটা বেশি নয়) not
  • যদি এটি বাহ্যিকভাবে উল্লেখ করা হয় এবং আমি এই ওয়েবসাইটটি প্রচুর সার্ভারে স্থাপন করছি যার সমস্ত ফাইলের নিজস্ব অনুলিপি থাকা দরকার, তবে এটি অনুলিপি করার জন্য আমাকে আর একটি কম ফাইল মনে রাখতে হবে।

প্রথম দুটি পয়েন্ট কেবল তখনই প্রযোজ্য যদি আপনি গুগল হতাশ হয়ে পড়ে বা হ্যাক হয়ে যাওয়ার বিষয়ে উদ্বিগ্ন হন।
ব্যবহারকারী16764

1
@ ব্যবহারকারী16764 - বা তারা কোনও কারণে তাদের jQuery এর অনুলিপিটি নামিয়েছেন (রাজনীতি, কে জানে)।
মিঃ জেফারসন

2
না রাখার আরেকটি কারণ হ'ল গোপনীয়তা। কোনও তৃতীয় পক্ষের হোস্ট করা সামগ্রী ব্যবহার করা তৃতীয় পক্ষকে ব্যবহারকারীদের ট্র্যাক করার একটি উপায় দেয় যা তারা সহজেই অনির্বাচন করতে পারে না।
ইয়ান নিউজন

কিছু CDNs বিশেষভাবে google হোস্ট কখনও কখনও নির্দিষ্ট কিছু দেশে থেকে ফাইল সীমাবদ্ধ করতে ঝোঁক
azerafati

উত্তর:


58

আপনার উভয় করা উচিত:

গুগলের মতো কোনও সিডিএন থেকে হোস্টিং দিয়ে শুরু করুন কারণ এটির সম্ভবত আপনার নিজের সাইটের তুলনায় উচ্চতর সময় থাকতে পারে এবং দ্রুত প্রতিক্রিয়া সময়ের জন্য কনফিগার করা হবে। অতিরিক্তভাবে, যে কেউ সিডিএন-র সাথে লিঙ্ক করে এমন কোনও পৃষ্ঠা দেখেছেন তারা তাদের ফাইলের ক্যাশেড অনুলিপি ব্যবহার করবেন, তাই প্রাথমিক লোডটি আরও ত্বরান্বিত করে তাদের একটি অনুলিপি পুনরায় ডাউনলোড করতে হবে না।

তারপরে সিডিএন ডাউন হওয়ার ক্ষেত্রে আপনার নিজের সার্ভারে ফ্যালব্যাক রেফারেন্স যুক্ত করুন (সম্ভবত নয়, তবে নিরাপদ নিরাপদ)। ফলব্যাকগুলি তুলনামূলকভাবে বুঝতে সহজ, তবে ব্যবহৃত স্ক্রিপ্টটি অনুসারে কাস্টমাইজ করা দরকার:

<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<script>
    if (!window.jQuery) document.write('<script src="/path/to/jquery-ver.sion.min.js"><\/script>');
</script>

নিশ্চিত করুন যে আপনি </script>কোনও <script>উপাদানের মধ্যে কোথাও লেখেন নি , কারণ এটি HTML উপাদানটি বন্ধ করে দেবে এবং স্ক্রিপ্টটি ব্যর্থ হতে পারে। সহজ ফিক্স এড়িয়ে যাওয়ার জন্য একটি হিসাবে একটি ব্যাকস্ল্যাশ ব্যবহার করতে হয়: <\/script>


দুটোই করার আরও একটি কারণ:

আপনি যদি কোনও জনপ্রিয় সিডিএন বাছাই করে থাকেন তবে হোস্টিং ফর্ম্যাট পরিবর্তিত হলে, বা অ্যাড্রেসটি অ্যাডজাস্ট করা হয় , তবে সুদূর ভবিষ্যতে ( মুরের দেওয়া আইন থেকে 18 ডলার) এটির কোনও ডাউন-টাইম থাকার সম্ভাবনা খুব কম unlikely নেটওয়ার্ককে পে-ওয়াল বা অন্য যে কোনও কিছুর পিছনে রাখা হয়েছে, আপনার লিঙ্কটি আর যেমন হয় তেমন কাজ করবে না। আপনি যদি কোনও ফালব্যাক ব্যবহার করেন, তবে এটি আপনার তৈরি করা প্রতিটি ওয়েবসাইটের মধ্যে ফিরে যাওয়ার আগে এবং সিডিএন লিঙ্কগুলি পরিবর্তন করার আগে হোস্টিংয়ের জন্য কোনও নতুন ফর্ম্যাটকে সামঞ্জস্য করতে আপনাকে কিছুটা সময় দেবে।


উভয় করার আরেকটি কারণ:

সম্প্রতি আমি ইন্টারনেট বিভ্রাটের একটি স্ট্রিংয়ের সাথে আঘাত পেয়েছি। আমি স্ক্রিপ্ট সংস্থার স্থানীয় অনুলিপিগুলিতে সংযুক্ত হয়েছি এমন প্রকল্পগুলিতে স্থানীয়ভাবে কাজ চালিয়ে যেতে সক্ষম হয়েছি এবং আমি খুব শীঘ্রই দেখতে পেলাম যে স্থানীয় কপিগুলি সংযুক্ত করার জন্য বেশ কয়েকটি প্রকল্প রয়েছে।


+1 আপনাকে সিডিএন এর সুবিধা দেয় এবং সম্ভাব্য ক্ষতিগুলিও কভার করে।
কোয়ান্টিন-স্টারিন

5
আপটাইম কী প্রাসঙ্গিকতা? যদি তার সাইটটি না উঠে থাকে তবে অনলাইনে
জেএস রাখা

3
@ বরিসইয়ানকভ, যদি সিডিএনটি ডাউন থাকে এবং আপনার সাইটটি আপ হয় এবং আপনি কোনও স্থানীয় ফ্যালব্যাক ব্যবহার না করেন, তবে আপনার সাইটটি কাজ করবে না। এটি আপটাইমের প্রাসঙ্গিকতা। যদি আপনার সাইটটি নীচে থাকে তবে আপনার সাইটটি ডাউন এবং স্থানীয় অনুলিপি কিছুই বিবেচনা করবে না।
zzzzBov

সিডিএন এর সমস্ত জায়গায় সার্ভার থাকবে, সুতরাং আপনি নিকটতম নোড থেকে সংস্থানটি পাবেন।
হাঞ্জোলো

35

আমার একই প্রশ্ন ছিল, তারপরে আমি এই নিবন্ধটি পড়েছিলাম এবং আমার গুগলকে আমার jQuery লাইব্রেরি হোস্ট করার আইডিয়াতে বিক্রি করা হয়েছিল।

নিবন্ধটি আপনার গ্রন্থাগারগুলিকে গুগলের সামগ্রী বিতরণ নেটওয়ার্ক (সিডিএন) দ্বারা হোস্ট করার অনুমতি দেওয়ার মূল সুবিধাটি বলে:

  • হ্রাসপ্রাপ্ত অবিলম্বে - আপনার সার্ভারের নিকটে শারীরিকভাবে না থাকা ব্যবহারকারীরা যদি আপনার নির্বিচারে অবস্থিত সার্ভার থেকে এটি ডাউনলোড করতে বাধ্য করেন তবে তার চেয়ে দ্রুত Google থেকে jQuery ডাউনলোড করতে সক্ষম হবেন।
  • বর্ধিত সমান্তরালতা - ব্রাউজারগুলি সংযোগগুলির সংখ্যা সীমিত করে দেয় যা একই সাথে তৈরি করা যায়। কোন ব্রাউজারের উপর নির্ভর করে, এই সীমাটি হোস্টনামের জন্য দুটি সংযোগের চেয়ে কম হতে পারে। গুগল এজেএক্স লাইব্রেরি সিডিএন ব্যবহার করা আপনার সাইটের একটি অনুরোধ সরিয়ে দেয়, আপনার আরও স্থানীয় সামগ্রীকে সমান্তরালে ডাউনলোড করার অনুমতি দেয়।
  • উন্নততর ক্যাচিং - গুগল এজেএক্স লাইব্রেরিগুলি ব্যবহার করে আপনার ব্যবহারকারীদের jQuery মোটেও ডাউনলোড করার দরকার নেই। অন্যদিকে, আপনি যদি স্থানীয়ভাবে jQuery হোস্ট করছেন তবে আপনার ব্যবহারকারীদের অবশ্যই এটি একবারে ডাউনলোড করতে হবে। আপনার প্রতিটি ব্যবহারকারীর বোধহয় ইতিমধ্যে তাদের ব্রাউজারের ক্যাশে jQuery এর কয়েক ডজন অভিন্ন অনুলিপি রয়েছে, তবে jQuery এর সেই অনুলিপিগুলি যখন তারা আপনার সাইটে যান তখন তাদের এড়ানো হবে।

আপনার নিজের লাইব্রেরিটি হোস্ট করার পক্ষে যে দুটি বুলেট পয়েন্ট হিসাবে আপনি তালিকাভুক্ত হয়েছেন, মনে রাখবেন যে এটি গুগল মেঘ সংস্করণটিকে হোস্ট করছে এবং গুগল জানে যে তারা কী করছে এবং প্রাপ্যতা এবং সুরক্ষা যতদূর যেতে পারে ততই বিশ্বাসযোগ্য হতে পারে। যাইহোক, @zzzzBov এই প্রশ্নের উত্তরে একটি খুব ভাল পয়েন্ট তুলে ধরেছে, যেখানে তিনি লাইব্রেরির একটি স্থানীয় অনুলিপি সংরক্ষণ করার এবং সিডিএন সংস্করণটি কোনও কারণে অ্যাক্সেস করা যাবে না এমন সম্ভাব্য ঘটনায় ডিফল্ট করার পরামর্শ দিয়েছেন।


4
আহ, আমি নিশ্চিত যে আমি গুগলের চেয়ে স্থিতিশীল সম্পদের হোস্টিং আরও ভাল কাজ করতে পারি। ;)
শিওনক্রস

উভয় (সিডিএন + স্থানীয় ফ্যালব্যাক) ব্যবহার না করা সহজ simply লজ্জা এই শীর্ষ উত্তর imho।
কোয়ান্টিন-স্টারিন

@ কিউস ফেয়ার যথেষ্ট, আমি আমার উত্তরের শেষে একটি নতুন বাক্য যুক্ত করেছি।
সিএফএল_জেফ 12

17

ব্যক্তিগতভাবে, আমি http://html5boilerplate.com/ থেকে একটি সংকেত নিচ্ছি

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="includes/js/libs/jquery-1.6.1.min.js"%3E%3C/script%3E'))</script>

এটি গুগল থেকে মূল jQuery ফাইলটি টানছে, তবে এটি যদি কোনও কারণে লোড না হয় তবে পরের লাইনটি এটি আপনার নিজের সার্ভার থেকে লোড করে।


5
এটি আপনাকে অফলাইন বিকাশ করার অতিরিক্ত সুবিধা দেয়।
আরএসজি

প্রোটোকল-সম্পর্কিত ইউআরএল এর ব্যবহার আর তেমন কার্যকর হয় না কারণ এটি একবার ছিল ( পলিউরিশ . com/2010/the- প্রোটোকল-সম্পর্কিত সম্পর্কিত- url দেখুন )। এখানে কেবল টাইপ করা যুক্তিসঙ্গত https://
GKFX

5

সিডিএন ব্যবহার করা এটি একটি আরও ভাল অনুশীলন, এবং সেই সিডিএন যদি গুগল হয়ে যায় তবে আরও ভাল - যেমনটি @ সিএফএল_জেফ এবং @ মরনস উভয়ই উল্লেখ করেছেন।

আমি এই উত্তরটি এমন কোনও বিষয় নির্দেশ করার জন্য যুক্ত করছি যা অন্য কোথাও নির্দেশ করার সময় প্রায়শই অগ্রাহ্য হয় যা মিশ্র সামগ্রীর সতর্কতা এড়ানো হচ্ছে । প্রোটোকল-কম URL গুলি ব্যবহার বিবেচনা করুন, যেমন:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js" type="text/javascript">
</script>

প্রোটোকল-কম URL গুলি ব্যবহার করার ক্ষেত্রে এখনও কিছু সহায়তা সংক্রান্ত সমস্যা রয়েছে, তাই আমি কী আমার সমস্ত http: // লিঙ্কগুলিকে কেবল // এর সাথে পরিবর্তন করতে পারি? সুতরাং, তবে কমপক্ষে কোনও উপায়ে সম্ভাব্য মিশ্র-সামগ্রী সতর্কতাগুলি হ্যান্ডেল করার চেষ্টা করুন ।


4

আপনার এটি Google এর API এর লাইব্রেরিতে উল্লেখ করা উচিত ..

এর প্রাথমিক কারণটি হল আপনার পৃষ্ঠা লোডগুলি গতি বাড়ানো । আপনি যদি ব্যবহারকারী ইতিমধ্যে একই লাইব্রেরিটি উল্লেখ করে অন্য কোনও সাইট পরিদর্শন করেছেন তবে এটি ইতিমধ্যে ব্রাউজারগুলির ক্যাশে সংরক্ষণ করা হবে এবং এটি ডাউনলোড করার দরকার নেই


0

আমি ভুল হতে পারি, কিন্তু ডকুমেন্ট বাস্তবায়ন করছি w যেহেতু জাভাস্ক্রিপ্ট ফাইলগুলি শরীরের শেষে রাখা ভাল অনুশীলন,

আমি পূর্ববর্তী উত্তরের ভিত্তিতে নিম্নলিখিত পদ্ধতিটি প্রস্তাব করছি:

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

if(!window.jQuery)
{
    //Creates the script element
    var script = document.createElement('script'); 
    //Adds the type attribute with "text/javascript" value
        script.setAttribute('type', 'text/javascript'); 
    //Adds the source attribute and populates it
        script.setAttribute('src', 'Put_The_Relative_Path_To_Your_JavaScript_File_Here'); 
    //Adds it to the end of the body, as it is good practice, to prevent render-blocking.  
    document.body.appendChild(script);

}

//Note that there's no need for you to verify with an onload function, since all scripts
//must be loaded before going to the next one! 

</script>

0

আমি যুক্ত করতে চাই যে একটি স্থানীয় অনুলিপি হোস্ট করা একটি সেরা অনুশীলন কারণ উপরের কোনওটিই সুরক্ষিত ভঙ্গির সাথে সম্পর্কিত কোনও কিছুই বলে না যার মাধ্যমে জিও অবস্থান এবং কঠোর হোয়াইট তালিকা জরুরী। স্থানীয়ভাবে ফাইলটি হোস্টিং না করে আপনার ক্লায়েন্টদের উপর একটি হ্রাস সুরক্ষা ভঙ্গি ধাক্কা।


এমন একটি সুরক্ষা নীতি যা ব্ল্যাকলিস্ট বা অন্যথায় গুগল jQuery এর সিডিএনকে সীমাবদ্ধ করে, কেবলমাত্র প্রশ্নকারীকেই নয়, প্রচুর ওয়েব সাইটগুলি ভেঙে ফেলছে। অন্য কথায়, উদ্বিগ্ন হওয়ার জন্য আরও বড় সমস্যা রয়েছে।

2
@ স্নোম্যান ... চীনের গ্রেট ফায়ারওয়ালের মতো (যা নিয়মিত স্ট্রিপ এক্সচেঞ্জের সাইটগুলি ভাঙা করে যা এর স্ক্রিপ্টগুলির জন্য সিডিএন ব্যবহার করে)?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.