Microsoft CDN для jQuery чи Google CDN? [зачинено]


187

Чи має значення насправді, який CDN ви використовуєте для посилання на ваш файл jquery або будь-який файл JavaScript у цьому питанні. Чи один потенційно швидший за інший? Які ще фактори можуть зіграти роль у тому, який cdn ви вирішите використовувати? Я знаю, що Microsoft, Yahoo та Google зараз усі мають CDN.

Відповіді:


151

Оновлення на основі коментарів:

Коротка версія: Це не має великого значення, але це може залежати від того, що вони приймають. Усі вони містять різні речі: Google не розміщує jQuery.Validate, Microsoft не приймає jQuery-UI, оскільки з 2016 року вони це роблять !!, Microsoft пропонує свої сценарії, які в іншому випадку будуть обслуговуватися через ScriptResource.axdі простішу інтеграцію (наприклад, ScriptManager з ASP. Чистий 4,0 ).

Важлива примітка. Якщо ви створюєте інтранет-додаток, тримайтеся подалі від підходу CDN. Не важливо , хто це хостинг, якщо ви не на дуже перевантажений сервер внутрішньо, чи не CDN не дасть вам більш високу продуктивність , ніж локальний Ethernet 100 Мбіт / 1GB буде. Якщо ви використовуєте CDN для суто внутрішньої програми, вам шкодить продуктивність . Налаштуйте правильно заголовки закінчення терміну кешування та ігноруйте існування CDN у сценарії, призначеному лише для інтрамережі.

Шанси або бути заблокованими, схоже, приблизно рівні, майже нульові. Я працював над контрактами, де це не відповідає дійсності, але, здається, це є винятком. Крім того, оскільки початкова публікація цієї відповіді, контекст навколо неї сильно змінилися, Microsoft CDN домігся значного прогресу.

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

CDN Google, який ми використовуємо для:

CDN Microsoft, який ми використовуємо для:

Наш сервер:

  • Combined.js? V = 2.2.0.6190 (Major.Minor.Iteration.Changeset)

Оскільки частина нашого процесу збирання поєднує та мінімізує всі користувальницькі JavaScript, ми робимо це за допомогою спеціального менеджера сценаріїв, який включає випуск або налагодження (не змінені) версії цих сценаріїв залежно від збірки. Оскільки Google не розміщує пакет підтвердження jQuery, це може бути недостатньою стороною. MVC включає / використовує це у своєму випуску 2.0, так що ви можете повністю покластися на CDN Microsoft для всіх своїх потреб, і все це автоматично через ScriptManager .

Єдиний інший аргумент, який слід зробити, - це DNS-часи. Це коштує з точки зору швидкості завантаження сторінки. В середньому: просто тому, що його більше використовується (це було довше) ajax.googleapis.com, швидше за все, DNS повернеться швидше ajax.microsoft.com, просто тому, що локальний DNS-сервер швидше отримає запит на нього (це перший користувач, який нараховує покарання в районі) . Це дуже незначна річ, і її слід враховувати лише в тому випадку, якщо продуктивність надзвичайно важлива, аж до мілісекунди.
(Так: я розумію, що цей момент суперечить моєму використанню обох CDN, але в нашому випадку час DNS значно затьмарений часом очікування на javascript / блокування, що відбувається)

Нарешті, якщо ви ще не подивилися на це, одним з найкращих інструментів є Firebug та деякі додатки для нього: Page Speed та YSlow . Якщо ви використовуєте CDN, але ваші сторінки щоразу вимагають зображень через відсутність заголовків кеша, вам не вистачає низько висячих фруктів. Панель Netbu Firebug може швидко дати вам швидке розбиття часу завантаження сторінки, і Page Speed ​​/ YSlow може запропонувати кілька корисних пропозицій.


26
Менш ймовірність бути заблокованою? Я хотів би знати, як ви придумали цю ідею. Мережа MS так чи інакше не є MS, саме akamai виконують збалансовані навантаження сервери набагато довше, ніж Google, що робить дурниці і "кращою системою перепаду". Дійсно, якщо ви збираєтесь пред'являти такі претензії, деякі докази були б непоганими.
blowdart

16
Деякі компанії, а я працював у кількох, блокують * .microsoft.com прямо як частину блокування оновлення Windows. Це правильно? Ні, це трапляється? Так. Приклад: ajax.microsoft.com/... підпадає під блок * .microsoft.com, а не за винятком www, він блокується, коли компанія вирішує заблокувати що-небудь, окрім www.microsoft.com. Я не сказав, що це дуже вірогідно, я сказав, що це більше, тому що я ніколи не бачив Google заблокованим, але не бачив зворотнього.
Нік Крейвер

5
І я бачив, як Google заблокований, щоб зупинити Gmail на державних сайтах. Але оскільки це так рідко, я навряд чи намагаюся використати це як виправдання в цьому випадку.
blowdart

19
Оскільки це було написано, MS додали jQuery-UI до свого CDN: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Буде Дін

3
@Nick Microsoft перенесла свій CDN з ajax.microsoft.com на ajax.aspnetcdn.com. Тому немає шансу заблокувати CDN Microsoft в рамках блокування оновлень Windows.
Сачин Йосиф

88

Ви абсолютно повинні використовувати Google CDN для jQuery (і це йде від розробника, орієнтованого на Microsoft).

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


7
якщо ми будемо продовжувати так думати, то тільки більші будуть дихати. Не використовуйте Google, тому що це Google, і припускайте, що всі з ними (без сумніву, більшість з них). Але нехай найкраще виграє, порівняй результат і піди з ними.
маму

20
Це не припущення. Сайти в топі 200 Alexa з використанням CDN від Google перевищують 100: 1 Microsoft. Що стосується популярності кешування, то єдиним моментом на користь MS jQuery CDN є те, що Microsoft.com використовує його, що дає йому велику експозицію лише від однієї посилання (але не стільки, скільки тисяч найпопулярніших сайтів, що посилаються на Google ).
Дейв Ворд

@DaveWard, чи можете ви переконатися, що це все ще має місце, чи таблиці дещо перевернулися за останні кілька років?
снодійний

3
@snumpy: Google CDN значно розтягнув свій потенціал від того, що я бачив. У Microsoft CDN немає нічого поганого . Це швидко і має кілька файлів, яких Google не має. Перевага кешування між веб-сайтами залежить від охоплення в мережі, і компанія Google домінує над усіма іншими в цьому плані.
Дейв Уорд

Оскільки я перейшов з jQuery CDN на Microeoft для розміщення jQuery Mobile, я перемістив інші завантаження jQuery до нього з Google, щоб зменшити кількість зворотних маршрутів DNS. Ще один фактор :)
Роб Грант

20

Google надішле вам версію jQuery, вдосконалену власним програмним забезпеченням, ця версія на 6 кбіт легша, ніж стандартна мінімізована версія, яку обслуговує MS. Ідіть до Google.


18

Варто враховувати, що обидві компанії пропонують дещо різні "зайві" бібліотеки:

Залежно від ваших потреб, це може бути актуальним.


23
Оскільки це було написано, MS додали jQuery-UI до свого CDN: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Буде Дін

15

Слід також зазначити, що як ajax.microsoft.com є піддоменом запитів microsoft.com, надсилайте всі файли cookie microsoft.com, додаючи загальний час, необхідний для повернення файлу.

Крім того, ajax.microsoft.com використовує компресію IIS7 за замовчуванням, яка поступається стандартній компресії, яку використовують інші веб-сервери.

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33.4K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26,5 К

Крім того, як інші згадували google CDN, набагато популярніший, що значно збільшує ймовірність кешування файлу.

Тому настійно рекомендую використовувати Google.


3
На той час це було хорошим запереченням, але воно більше не застосовується, оскільки рекомендоване ім'я домену CDN зараз ajax.aspnetcdn.com. Блокування заперечень * .microsoft.com також більше не застосовується.
Стівен Кеннеді

це правда. рада, що нарешті виправили цю частину. Тепер я не так вже й погано включаю плагін jquery validate / cycle з ms cdn.
Алістер

Справа з файлами cookie також більше не застосовується через перехід на aspnetcdn.
Роб Грант

11

Це, мабуть, не має значення, але ви можете це підтвердити за допомогою деякого тестування A / B. Надішліть половину вашого трафіку на один CDN, а половину на інший, і встановіть кілька профілів для вимірювання відповіді. Я думаю, що важливіше мати можливість легко перемикатися у випадку, якщо у одного або іншого виникли серйозні проблеми з недоступністю.


7

Я знаю, що я трохи пізно кусаю тут, але ось код, який я використовував у виробництві. У мене ніколи не було проблем з цим, але ваш пробіг може відрізнятися. Переконайтесь, що ви протестуєте його у власному оточенні.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>    
<script type="text/javascript">
    !window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    !window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script> 

1
На жаль, деякі браузери (IE6) не затримуватимуть обробку цього онлайн-скрипту, поки не буде завантажено src = скрипт, тому це не буде працювати, як очікувалося. Хотілося б!
Вальден Леверич

2
Отже, ваші користувачі IE6 відчувають дещо повільний досвід. Хороший компроміс, якщо ви запитаєте мене. IE6 знижується ... навіть у корпоративних інтранет.
Армстронджест

7

Йдеться про статистику: jquery.com завантажує jQuery від Google. Так само роблять Twitter, Stackoverflow та багато інших. Отже, є досить високі можливості того, що користувач вашого веб-сайту вже має його кешування = завантаження взагалі немає .

Забудьте про валідатор, пропускну здатність і швидкість, тому що це головна перевага. В іншому випадку будь-який інший варіант CDN буде виконувати по суті на тому ж рівні.


1
Так, але Twitter (за даними encosia.com/2010/09/15/… Дейва Варда ) використовує jQuery 1.3.0 (у "старому" Twitter), тому вони насправді не мають значення ... поки ...
veggerby

Ну, сайти, які я робив деякий час тому, досі використовують jQuery 1.3.0, як і (старий) Twitter. Це завжди має значення.
achairapart

6

Чи один потенційно швидший за інший?

Мені це справді було цікаво, тому я встановив тестову сторінку jsbin, використовуючи кожне з наведених нижче, а потім запустив її через візуальний інструмент порівняння webpagetest.org. Я тестував:

  1. ajax.googleapis.com
  2. code.jquery.com
  3. ajax.aspnetcdn.com
  4. cdnjs.cloudflare.com

Хто був найшвидшим: code.jquery.com по 0,1 секунди в обох тестах

Хто був найповільнішим: ajax.aspnetcdn.com за 0,7 секунди в першому тесті та ajax.googleapis.com за 1 секунду в другому тесті

Ось перший тест (кожен був тестований 3 рази):

Відео: http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

Звіти: http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

Ось другий тест (ще 3 у кожному):

Відео: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

Звіти: http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJR


4

Як зазначає Pingdom :

Коли хтось відвідує ваш сайт, якщо він вже відвідував інший сайт, який використовує той самий файл jQuery на тому ж CDN, файл буде кешований і його взагалі не потрібно завантажувати. Це не може отримати швидше, ніж це.

Це означає, що найбільш широко використовуваний CDN матиме шанси на своїй стороні, які можуть окупитися для вашого сайту.

Кілька зауважень щодо ефективності: CDN Google незмінно є найповільнішим із цих трьох у Північній Америці та Європі. В Європі CDN Microsoft є найшвидшим.


3

Я думаю, це залежить від того, де знаходиться ваша цільова аудиторія. Ви можете використовувати alarra.com для перевірки швидкості CDN у багатьох місцях по всьому світу.


Це не дає відповіді на запитання. Щоб критикувати або вимагати роз'яснення у автора, залиште коментар під їх публікацією.
Fiona - myaccessible.website

1
Для Фіони - це моя відповідь на питання. Питання "чи не має значення", моя відповідь - "це залежить від того, де знаходиться його цільова аудиторія", і я надав сайт для перевірки швидкості з різних місць по всьому світу, щоб він міг вирішити, який CDN використовувати. Це не коментар, це відповідь.
мовчазний

3

Ще одне врахування - якщо ваш сайт SSL і вам потрібно підтримувати Android 2.1 (або новішої версії), сертифікат SSL у версії HTTPS Microsoft CDN призведе до виходу з ладу цих версій браузера Android за цим питанням: http: // code .google.com / p / android / issues / details? id = 5001 . Це не «помилка» Microsoft, оскільки сертифікат SSL технічно дійсний, а дефект - у впровадженні SSL для Android ..., але, тим не менше, він може зламати ваш сайт.

Сертифікат SSL на CDN Google не підпадає під цю проблему (стосується імені сертифіката "Ім'я предмета сертифіката").

Отже, для підтримки SSL + Android 2.1 використовуйте Google CDN.


2

Моя відповідь дещо інша, ніж інші, я піду з microsoft, якщо вам потрібен валідатор jquery, який потрібен майже всім, якщо ви використовуєте jquery.

Http-з'єднання Microsoft CDN - Keep-Alive, що є великим плюсом, коли ви вимагаєте декількох елементів.

Тож якщо вам потрібна перевірка jquery, тоді використовуйте Microsoft CDN, навіть якщо вам потрібен jquery ui, використовуйте microsoft, оскільки Google не підтримує живих, тому кожен запит є власним. тому змішування таким чином є плюсом. якщо ви використовуєте microsoft лише для валідатора, то ви здійснюєте окреме з'єднання з google-сервером для кожного запиту.



1

Також під час використання Google CDN врахуйте, що люди іноді роблять помилки на зразок ajax.googelapis.com. Це потенційно може створити дійсно неприємну атаку xss (міжсайтовий сценарій). Я фактично перевірив це, зареєструвавши типографію googlapis.com і дуже швидко виявив, що обслуговує запити на JavaScript, карти, css тощо.

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

Дякую


1
Можливо, трохи поза темою, але цікавий момент.
achairapart

1

Залежно від галузі, на яку орієнтується додаток, можливо, ви не хочете використовувати CDN, керований іншими організаціями. Часто виникають питання щодо дотримання, конфіденційності та конфіденційності.

Наприклад, коли ви включаєте Google Analytics у захищену програму, браузер все одно надсилає поточну URL-адресу як заголовок "реферера". Будь-які ідентифікатори, скажімо, ідентифікатор сесії або секретний маркер, можуть з’являтися у їхніх журналах. Наприклад, якщо клієнтський IP-адрес 192.0.2.5references https: //healthsystem.example/condition/impotence , то добре, ви можете зробити висновок про інформацію, яка вважається досить приватною.

Інші випадки включають інформацію про наслідки, таку як номер облікового запису, номер соціального страхування або інформація про сеанс у URL-адресі. Такі дані ніколи не повинні бути в URL-адресі, оскільки вони можуть використовуватися поза додатком.

Хоча ви можете довіряти Google, Microsoft чи Yahoo, ваші користувачі можуть цього не робити.

У таких галузях, як фінанси, право та охорона здоров'я, ви можете створити власний CDN за допомогою постачальника (наприклад, Akamai), з яким ви можете підписати BAA.


1

Я б радив, щоб ви базували своє використання на загальному розташуванні користувачів, на яких ви орієнтовані.

Якщо ваш сайт орієнтований на широку громадськість, то використання CDN Google було б хорошим вибором.

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

* Зауважте, що ви можете створити сайти, конкретні для регіону, наприклад, cn.mysite.com, щоб задовольнити спеціально для Китаю, але якщо ви мало ресурсів та часу, варто задуматися.

Повний список Microsoft CDN тут. http://www.asp.net/ajaxlibrary/cdn.ashx

З тих пір вони перейменовані на ajax.aspnetcdn.com , що знижує ймовірність блокування правилами брандмауера.


-3

Я б використав обоє!

Оскільки хостинг Google Jquery існує набагато довше, шанси набагато вищі, що люди вже будуть його кешувати порівняно з Microsoft, тому я мав би його спочатку.

Особисто я би використав щось подібне -

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded  

  document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
        }
} else {
    // jQuery is loaded
}

(Не впевнений, що це працює на 100%, але я збирався просто написати ідею, а не приклад. Це посилання на Google, що розміщується Jquery, а не Microsoft, оскільки я не зміг знайти посилання)


6
jQuery ніколи не буде визначений, якщо ви не введете його на свою сторінку. Кешування файлу .js doe соплі зробить його доступним для всіх сторінок браузера за замовчуванням!
Фалкайн

1
Це працює: S Re прочитати сценарій - якщо він не визначений, він пише це і завантажується?
Віл

12
Я ніколи не розумів, чому люди роблять "<scr" + "ipt ..."
анонімний боягуз

3
"Залежно від браузера, кількості інших попередніх javascript та того, наскільки добре сформований загальний код, це робиться для того, щоб парсер не міг інтерпретувати теги <script> і </script> як виконуваний код, а не як рядок бути написаним ".
SeanJA

2
Проблема в тому, що jQueryніколи не буде визначено, якщо ви активно не завантажили її. У вашому скрипті перша гілка завжди буде виконуватися (якщо ви не маєте іншого включення jQuery вище), що робить сценарій зайвим.
jensgram
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.