Чому я повинен використовувати CDN Google для jQuery?


169

Для когось це може бути очевидно, але мені було цікаво: чому я повинен залежати від сервера Google для розміщення jQuery для мого сайту?

Це лише тому, що швидше завантажується?



2
Ніхто не згадує, яка політика Google стосувалася гарячих посилань на свої файли JS (дані гарячих посилань зазвичай нахмурені), тому є URL-адреса, де Google згадує це в порядку, і більше про бібліотеки, які вони розміщують: code.google.com/apis/ajaxlibs/ документація / index.html
Loftx


1
Багато користувачів вже завантажили jQuery з Google або Microsoft під час відвідування іншого сайту. Як результат, він буде завантажений з кешу, коли вони відвідують ваш сайт, що призводить до більш швидкого завантаження
AminM

Ви не повинні використовувати Microsoft чи Google. Використовуйте MaxCDN. Набагато більше шансів отримати кеш-хіт, що найважливіше тут blog.jquery.com/2014/01/14/…
0fnt

Відповіді:


393

Це відбувається тому:

  1. Це збільшує наявний паралелізм.
    (Більшість браузерів одночасно завантажуватимуть 3 або 4 файли з будь-якого веб-сайту.)

  2. Це збільшує шанси на те, що буде кеш-хіт.
    (Оскільки більше сайтів дотримуються цієї практики, більше користувачів вже мають файл готовий.)

  3. Це гарантує, що корисна навантаження буде якомога меншою.
    (Google може попередньо стиснути файл у широкому наборі форматів (наприклад, GZIP або DEFLATE). Це робить час завантаження дуже малим, оскільки він дуже стислий і не стискається під час руху.)

  4. Це зменшує кількість пропускної здатності, використовуваного вашим сервером.
    (В основному Google пропонує безкоштовну пропускну здатність.)

  5. Це гарантує, що користувач отримає географічно близьку відповідь.
    (У Google є сервери по всьому світу, що ще більше зменшує затримку.)

  6. (Необов’язково) Вони автоматично оновлюватимуть ваші сценарії.
    (Якщо вам подобається «літати за сидіння штанів», ви завжди можете використовувати останню версію будь-якого сценарію, який вони пропонують. Вони можуть виправити отвори в безпеці, але, як правило, просто зламаєте ваші речі.)

10
Мені подобається, як ти все частіше придумуєш все більше причин. +1 лише для цього.
Матч

6. Сервери Googles, ймовірно, швидші, ніж ваші! Я не впевнений, що пункт 3 є дійсно актуальним, оскільки хтось може змінити так само добре, як Google. +1 за чудову відповідь :)
Пол Крісі

1
Мені здається, що №3, мабуть, має більше спільного з gzip тощо, оскільки jQuery вже видає мінімізовану версію.
Матчу

2
Бог на всіх нападав на мене, я просто надіслав свої ідеї, і його прийняли, LOL
Farshad

1
@farshad: Не нападати на вас, атакувати прийняту відповідь, що було не так добре, як наступна відповідь. Ось так працює Q & A громади. Спробуйте сформулювати свою відповідь трохи професійніше наступного разу та обмежте критику питання на корисну, конструктивну форму.
Джоел

58

Існує кілька сценаріїв, коли ви не хочете використовувати jQuery з CDN Google:

  1. Коли ви створюєте інтранет-додаток, де веб-сервер розміщується в тій же мережі, що і клієнти. Якщо ви використовуєте CDN jQuery від Google, ви будете телефонувати в Інтернет, а не через веб-сервер у локальній мережі. Це збільшує пропускну здатність для вашої організації та повільніше.

  2. Коли ви хочете запустити свою програму в автономному режимі . (Досить пов’язане з першим випуском) Якщо вам потрібно працювати над середовищем розробки (керується, наприклад, з Bower ), можливо, вам доведеться мати можливість працювати з додатком без підключення до Інтернету (тобто: у поїзді :)

  3. Коли вам потрібно налаштувати його . Наприклад, якщо ви використовуєте Grunt для створення бібліотеки для використання лише певних модулів або встановлення імені AMD

  4. Коли ви розміщуєте сторінки через SSL, для яких потрібен jQuery. Ви повинні обслуговувати JavaScript через SSL, а також свою сторінку, щоб уникнути проблем із безпекою та попереджень.

Також Microsoft розміщує jQuery на своєму CDN. Це ще один вибір, порівнянний з використанням jQuery, розміщеного Google.


35
Просто FYI, який ви можете використовувати сервери Google для обслуговування SSL-версії розміщених бібліотек javascript. ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js працює.
Аарон Вагнер

Добре знати, Аарон. Дякую.
Ленс Фішер

3
+1 за згадування Microsoft. Google отримує шлях надто багато кредитів ІМО.
Так, Баррі

7
Також FYI: Схема відносних гіперпосилань, як-от src="//ajax.googleapis.com/...", працює.
Джон Гітцен

3
А також розгляньте cndjs
Брайс

29

Це дослідження по TJ VanToll переконали мене в тому , що це краще зчепити JQuery з іншими скриптами , а не завантажити його з CDN.

Причина - затримка, пов’язана із завантаженням jQuery на мобільних пристроях:

"У 2012 році середній час RTT у мобільній мережі в Сполучених Штатах становив 344 мс. І це 344 мс застосовується не лише до кожного запиту HTTP - який зараз становить середня веб-сторінка 93, - але і для кожного пошуку DNS та TCP-з'єднання ... Незважаючи на те, що середні RTT покращуються, є лише невеликі додаткові вигоди, оскільки нинішні мережі знаходяться в межах невеликого коефіцієнта теоретичної межі, продиктованої фізикою ".

Він також цитує цю публікацію від Steve Souders, яка показує, чому ви насправді навряд чи отримаєте перевагу кешування від використання CDN:

"Через фрагментацію постачальників CDN, версій jQuery та використання протоколу (http проти https) шанси отримати кеш-пам'ять CDN є надзвичайно низькими - а завантаження із зовнішнього домену має потенціал виконати не один, а три кругові поїздки (пошук DNS, з'єднання TCP та HTTP GET). "


3
Це більше не стосується HTTP2 та SPDY. Сьогодні ви можете розмістити всі свої зовнішні ресурси в CDN, наприклад, Cdnjs.com або щось подібне, і всі файли будуть завантажені за допомогою одного запиту. Це в основному те саме, що об'єднати.
Рікардо Поло Джарамілло

13

Найбільша користь - це кешування. Теорія полягає в тому, що якщо відвідувач відвідував сайт, який завантажував їх бібліотеки JavaScript, скажімо, jQuery, наприклад, з Google CDN, тоді, коли вони відвідують ваш веб-сайт, бібліотека вже знаходиться в кеші браузера цього користувача і не доведеться її завантажувати знову . Це теоретично звучить чудово.

Переваги, які поділяються тут і в інших місцях, всі теоретичні. Щойно натрапив на поглиблений аналіз використання CDN та якщо він забезпечує очікувані переваги від продуктивності. http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits


Ця відповідь є заниженою. Він надає однаково справедливі "мінуси" до "про" прийнятої відповіді вище.
Томас Вана

@ user239558 Посилання не було б мертвим, якби автор дослідження фактично використовував CDN ;-) Помилка: [function.require]: не вдалося відкрити потік: Немає такого файлу чи каталогу в / homepages / 41 / d222999437 /htdocs/wp-content/themes/prose/functions.php
jplandrain

Стаття недостатньо продумана. У ньому йдеться про те, що найменш поширені ліцензії jQuery обслуговуються компакт-диском Google на приблизно 0,5% усіх сторінок. Під час загального сеансу перегляду я відвідую безліч сторінок, особливо тих невеликих посилань на сайти, як, наприклад, той, який розміщує його. Або веб-сайти блогу. Я легко відвідую 30 унікальних сайтів на день, після тижня шанси на те, щоб не зробити кешування, досить малі. Хоча це може бути не кешоване для всіх ваших користувачів, люди, які широко використовують Інтернет, майже завжди будуть кешувати їх, оскільки вони відвідують набагато більше ніж 1 унікальний домен.
Aidiakapi

8

Основна причина НЕ дозволяти Google розміщувати ваш jQuery, про який багато людей не замислюються, - це те, що він не завантажиться, якщо ви перебуваєте в Китаї. Він заблокований разом із багатьма іншими сценаріями, шрифтами тощо ..., розміщеними в CDN Google. Якщо вам потрібно охопити китайську аудиторію, найкраще завжди використовувати резервний сервер, розміщений на власному сервері. Китай APIS заблокований у Китаї


Я не згоден @tmthydvnprt. Питання викликає сумніви, тож саме тут починається більшість вин, але це відповідає на питання.
Goodbye StackExchange

1
Я прийшов сюди на те саме. Якщо користувачі перебувають у Китаї, то найбільше все від Google блокується великим брандмауером. Хоча це, мабуть, не проблема, оскільки багато людей в Китаї користуються послугою VPN, і ви, мабуть, не хочете орієнтуватися на китайський ринок.
Джастін

0

Тут є кілька хороших відповідей на тему "Чому ти повинен ..." та "Чому ти не повинен ..."

Я просто хочу додати список альтернатив Google, якщо ви хочете завантажити jQuery з CDN.

Підсумовуючи це, ви в основному покращуєте загальну ефективність веб-сайту / програми.


0

Отримавши CDN разом із службовим працівником, ви можете завантажити CDN один раз упродовж життя клієнта, а не кожен раз, коли ви оновлюєте код.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.