Бібліотека, що розміщується в jQuery - це корисно?


14

Чи є якась реальна дотична вигода від використання розміщеної бібліотеки jQuery Google? Або ми просто завантажимо його на наш сервер?

Яка ваша думка з цього приводу?


1
Простий пошук у Google дозволив відповісти ...
Francisco Presencia

Відповіді:


18

Існує дві основні переваги використання зовнішнього CDN, наприклад Google для розміщення jQuery:

  1. Це швидше. Це, безумовно, буде швидше, ніж ваш сайт, і, ймовірно, швидше, ніж будь-який CDN, який ви створили самостійно.
  2. Він може бути вже кешований . Багато сайтів також посилаються на jQuery на CDN Google, тому, якщо вони відвідали інший сайт з ним до вашого, їм навіть не потрібно буде завантажувати його.

Потенційні мінуси:

  1. Домен може бути заблокований (це досить часто в таких місцях , як Китай). Вирішити це можна за допомогою локального резервного резерву ( див. Тут як ).
  2. Фрагментація номерів версій досить висока, тому відвідувачі сайту можуть мати багато різних версій в кеші, але не той , який ви посилається ( див тут для деякої останньої статистики ). Це проблема лише при завантаженні першої сторінки.

3
Чи можете ви опублікувати посилання на те, як налаштувати локальну резервну копію?
Стівен Остерміллер

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

Це трохи вводить в оману. Браузери паралельно завантажують об’єкти незалежно від того, де вони розміщені, але існує обмеження кількості речей, які вони завантажуватимуть з того самого хоста відразу.
Фонтан Тіма

Я пропустив це, якщо чесно, це ні тут, ні там - файл може завантажуватися паралельно, але це також додатковий пошук DNS. Плюс, будь-яка різниця у часі будь-якої з цих причин незначна.
НезадоволенеЗакар

Справедливо. Але на швидких з'єднаннях це не може призвести до швидшого загального часу навантаження, оскільки більше «труби» можна використовувати?
nathangiesbrecht

11

Ще один недолік:

Використання CDN дозволяє оператору CDN відстежувати відвідувачів сайтів. Тому вони не коштують грошей.


Відстеження, але не відвідувачів: як власний jquery, так і CDN jQery google розміщуються в доменах, які не встановлюють і не використовують файли cookie (це, мабуть, також оптимізація ефективності), і в запиті немає дійсно ідентифікованої інформації. Провайдер CDN може отримати уявлення про IP-адреси та деяку статистику щодо рядків агентів користувача та рефери. Це, мабуть, цінно, але саме по собі це не є величезним ризиком для конфіденційності (якщо ці записи співвідносяться з іншою базою даних - скажімо, персоналізованими оголошеннями, розміщеними в подібний час, - можливо, це може бути засобом відстеження).
Еймон Нербонна

Я думаю, що можна вважати належним (у випадку Google), що дані корелюються з іншими базами даних, оскільки майже кожен користується Google для пошуку. Те ж саме з google fonts: нещодавно я намагався самостійно розміщувати шрифти на сервері, але виявив, що це дуже важко зробити. Google не забороняє цього (Open Source), але вони не надають вам файли готовим до використання способом: ви можете їх скласти самостійно (але немає файлу), або ви можете підробити запити до сервери, які використовуються для їх нормальної доставки. І те й інше не під силу для нетехнологів.
Джост

Можливо, У мене немає жодної внутрішньої інформації, тому важко сказати точно. Я впевнений, що це буде баггі та матимуть значні прогалини, однак: Більшість місць, якими я користуюсь Інтернетом, NATED, а в деяких є досить багато користувачів із подібними машинами (ймовірно, однакові рядки UA) - неможливо було б знати, які запит надходить від кого. І звичайно, що за допомогою кнопок adsense та соціального доступу вони можуть мати більш надійні засоби майже завжди, тому я можу уявити, що вони не турбуються. Що стосується шрифтів - я завантажував їх кілька разів, тому я не зовсім розумію, що ви маєте на увазі під цим важким?
Еймон Нербонна

Щоб було зрозуміло: я припускаю, що більшість відвідувачів веб-сайтів, які ви здійснюєте, можуть відслідковувати великі колекціонери статистики завдяки кнопкам соціального обміну (досить розповсюдженим) та рекламним оголошенням, які є майже всюди. Тож мені просто цікаво, наскільки цінною, можливо, оманливою інформацією із сильно кешованих запитів js - я ставлю ставку, не дуже, отже, я припускаю, що вони не турбуються намагатися особисто ідентифікувати людей, використовуючи JS, що обслуговується CDN.
Еймон Нербонна

Це не так кешовано, як можна було б подумати - Коли вбудовують шрифти, використовуючи спосіб, яким Google віддає перевагу, вставляючи CSS-посилання на fonts.googleapis.com, кожен перегляд сторінки відкриває з'єднання з google (їх можна побачити в Firebug). Не має значення, кешировано чи ні. Щодо завантаження: Ви можете вказати мені на місце, де я можу завантажити шрифти у високоякісному форматі eot, woff, ttf та svg (ті ж версії, які постачає google, немає зовнішніх перетворювачів)?
Джост

3

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

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

Якщо пропускна здатність нескінченна, то вам найкраще НЕ різкувати, тому що ви будете так само повільними, як і ваш найповільніший сервіс - оскільки затримки не є ідеально передбачуваними, з достатньою кількістю служб, навіть якщо вони швидкі, вам знадобиться лише один біт невдача спричинить повільне завантаження сторінки.

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

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

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

У будь-якому випадку: набагато релевантніше буде те, чи ви вперше висвітлили основи; відповідні заголовки кешування, конкатенація, мінімізація та gzipping (бажано з високим ступенем стиснення). І ось суть: якщо ви цього не робите, то принаймні CDN буде, тож це виграш ...

TL; DR: Якщо у вас є конкатенація + мінімізація + gzipping + кешування всіх охоплених, то подання невеликих скриптів локально швидше, ніж з CDN, незважаючи на кращу ефективність CDN - але тільки якщо ви виконали домашнє завдання, можливо, не на першій сторінці навантаження, і з цього правила безумовно є винятки.


Між іншим, є кілька байтових стружок, виграних за допомогою лише одного запиту: одні заголовки складають майже 1 кбіт, що при корисному навантаженні в 28 к не є нічого. gzip краще працює з більшою кількістю контексту, що економить ще 0,5 Кб. Накладні витрати TCP, DNS, HTTPS можуть легко додавати туди-сюди KB, і що ще гірше, RTT. Ось чому для таких маленьких файлів CDN - це не так швидко, як ви могли подумати.
Еймон Нербонна

1

Використання розміщеної бібліотекою jQuery від Google дозволяє завантажувати вашу сторінку швидше. Дійсно, бібліотека завантажується в той же час вашої сторінки, а не після.


Але як це впливає на завантаження сторінки?
Лев

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