Переваги та підводні камені локального хостингу jQuery [закрито]


85

В даний час ми витягуємо бібліотеки jQuery та jQueryUI (і jQueryUI CSS) із google CDN. Мені це подобається, тому що я можу зателефонувати google.load("jquery", "1");
і буде використано останню версію jQuery 1.xx.

Тепер я повинен витягувати бібліотеки локально через безпеку.

Я із задоволенням користуюся ними на місцевому рівні, але мені цікаво, на які інші переваги та підводні камені слід остерігатися?


5
про які проблеми безпеки ми говоримо?
Ascherer

Я не питав. Я здогадуюсь, що це не стільки безпека, скільки спроба контролювати пропускну здатність за допомогою брандмауера gmail тощо
orolo

Відповіді:


109

Головна перевага їх розміщення на CDN полягає в тому, що файли можна завантажувати паралельно файлам, завантаженим із вашого власного веб-сайту. Це зменшує затримки на кожній сторінці. Отже, зворотна сторона цього - підводний камінь локального хостингу - збільшення затримки . Основною причиною цього є те, що браузери мають обмежену кількість підключень, які вони можуть одночасно зробити до одного веб-домену. У IE6 це було встановлено за замовчуванням для 2 одночасних підключень до одного домену - спільного використання між усіма відкритими вікнами IE !! У IE8 + він покращився, за замовчуванням став 6, що відповідає FF / Chrome, але все ж, якщо у вас багато зображень і ви не використовуєте спрайти, ви відчуєте велику затримку.

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

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

Не забудьте також прочитати іншу відповідь на це запитання @Xaver. Це дуже хороший фокус


5
Ще однією перевагою явного встановлення версії бібліотеки є те, що Google надає їй більше часу кешування, наприклад, якщо вказати 1.9.1, це дасть більше часу кешування, ніж просто запит 1.9 (оскільки може вийти нова версія jQuery 1.9, той самий).
Barry

аааа - реваксарти ? Я не бачу такої відповіді, ні поточної, ні видаленої. Що таке "дуже хороший фокус"?
ashleedawg

144

Я завжди використовую CDN (Content Delivery Network) від Google. Але про всяк випадок, коли це офлайн:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="jquery-1.4.2.min.js"><\/script>')</script>

Візьміть jQuery від Google CDN і, якщо потрібно, поверніться до локальної версії

Змінити : Якщо вам не потрібно підтримувати IE6 і ваш сайт частково використовує https, ви також можете видалити http:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

4
Кредит спільноти: stackoverflow.com/questions/1014203 / ...
oucil

24
XVIDEOS використовує це рішення зараз: P
Shougo Makishima

Мені, мабуть, щось тут не вистачає ... Чи не передбачає цей підхід, що завантажений CDN jQuery завантажиться і буде інтерпретований до того, як буде інтерпретований наступний рядок ( !window.jQuery...)? <script>теги обробляються асинхронно, так?
rinogo

2
<script>теги обробляються синхронно! У другому рядку jQuery вже повинен бути завантажений, але на всякий випадок, якщо ні, ми вводимо трохи JS, щоб завантажити його локально. document.writeНіколи не буде виконана , якщо JQuery вже існує.
Xaver

24

Інші охопили переваги. Підводні камені:

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

  • Будь-який сайт, з якого ви натискаєте, <script>може повністю контролювати взаємодію користувача з вашим сайтом. Якщо Google почувається злим, він може помістити щось у свою копію jQuery для реєстрації ваших натискань клавіш, викрасти особисту інформацію зі сторінки, на якій ви перебуваєте, щоб пов’язати їх із своєю базою даних веб-відстеження, змусити вас опублікувати повідомлення «Я люблю Google!» коментарі до кожної форми тощо.

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

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


21
Google не робить цього ... Я ЛЮБЛЮ GOOGLE ... вони? :-p
JasCav

1
Відмінні моменти щодо питань безпеки.
Naltroc


1
Хороші моменти: ніколи не замислювався про те, як віддалений сценарій CDN можна зламати, а потім витягнути на мій сайт. Можливо, це не характерно для великих бібліотек, таких як jQuery, jQueryUI, Boostrap тощо, але, як уже зазначалося, менші, менш підтримувані бібліотеки можуть стати жертвами, особливо якщо вони не оновлюються. Хороші бали +1
twknab

14

Google CDN:

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

Місцево:

  • можливий розвиток без підключення до мережі
  • все ще може отримати деякі переваги продуктивності за допомогою gzipping, крім зменшення

5
однак завантаження jquery u із cdn google зменшено. Ще одним плюсом використання cdn є те, що він чистіший для вашої структури каталогів :)
Ascherer

if a new version breaks your existing plugins or site, you'll know about it possibly too lateВи можете вказати версію за посиланням CDN, щоб цього уникнути.
Адам

13

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


9

Переваги: ​​(спеціально для CDN Google)

  1. Завантаження паралельно з вашими файлами. Інші відповіді вирішують це далі
  2. Сервери Google, швидше за все, зможуть швидше фізично доставити вміст
  3. Загальні бібліотеки та фреймворки, можливо, вже є на машині користувача, оскільки кеш HTTP для CDN є універсальним для всіх сайтів
  4. Ваша пропускна здатність не повинна йти на обслуговування великих бібліотечних файлів

2

Практично з будь-якого погляду на це використання CDN від Google - це добре.

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

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

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


1

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

  • Користувачі з різних географічних регіонів. Якщо ви розміщуєте свій веб-сайт у США, але у вас є видима кількість європейських користувачів - CDN покращить час завантаження.
  • Велика кількість користувачів та \ або великий вміст, тому одного головного сервера вже недостатньо. Можна придумати будь-який веб-сайт із порно-відео (або Netflix, якщо хочете). Відеопотік є великим навантаженням, оскільки CDN буде набагато меншим навантаженням на основний сервер.

Але ... справа в тому, що ці пункти насправді не стосуються 90% веб-сайтів у світі. Б'юсь об заклад, ви не фейсбук з мільйонами користувачів Інтернету по всьому світу, ви не Pornhub, який щосекунди передає сотні ГБ.

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


Це було більше про CDN загалом, тепер дозвольте мені бути ближче до фактичного питання про jQuery чи будь-яку іншу бібліотеку.

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

З мого недавнього досвіду - я оновив TinyMCE на веб-сайті, який я веду, з 3.xx (від 2012 р.) До 5.xx (від весни 2019 р.). Цей веб-сайт працював 7 (сім!) Років без будь-якого обслуговування в цій частині логіки. Тоді ще не існувало концепції "мініфікації", і CDN не були такими поширеними, як зараз. Але навіть якби вони були загальними - ніколи не знаєш, що буде через 3-5-10 років. Зазвичай ви хочете, щоб ваш веб-сайт залишився живим навіть без того, щоб ви його підтримували, чи не так? Однак якщо ви витягнете jQuery із CDN сьогодні, то це посилання може (і, можливо, перерветься) через 5 років.

Рішення з CDN І повернення до локальної версії, як запропонував @Xaver, може стати хорошим компромісом. Але ... можливо, просто позбутися посилання CDN? ;)


0

Для мене це насправді залежить від того, наскільки великий контроль ти хочеш мати. Якщо ви схожі на мене і вам потрібно розвивати місцевого господаря під час роботи та подорожей. Наявність локальних файлів jquery краще, ніж розміщення їх у google чи деінде.

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