Преимущества и недостатки локального размещения jQuery [закрыто]


85

В настоящее время мы извлекаем библиотеки jQuery и jQueryUI (и jQueryUI CSS) из Google CDN. Мне это нравится, потому что я могу позвонить, google.load("jquery", "1");
и будет использоваться последняя версия jQuery 1.xx.

Теперь мне нужно вытащить библиотеки локально из соображений безопасности.

Я счастлив найти их на месте, но мне интересно, какие еще преимущества и недостатки следует остерегаться?


6
о каких проблемах безопасности мы говорим?
Ascherer

Я не спрашивал. Я предполагаю, что это не столько безопасность, сколько попытка контролировать пропускную способность с помощью брандмауэра
Gmail

Ответы:


109

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

Используя CDN, я бы всегда явно задавал версию библиотеки. а не получал последнюю. Это снижает риск выхода новых версий из строя вашего кода. С jQuery маловероятно, но возможно.

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

Убедитесь, что вы также прочитали другой ответ на этот вопрос от @Xaver. Это очень хороший трюк


5
Еще одним преимуществом явной установки версии библиотеки является то, что Google дает ей более длительное время кеширования. Например, указание 1.9.1 даст более продолжительное время жизни кеша, чем просто запрос 1.9 (так как новая версия jQuery 1.9 может быть выпущена, но 1.9.1 всегда будет тот же самый).
Барри

эээ - реваксартс ? Я не вижу такого ответа, ни текущего, ни удаленного. Что за «очень хороший трюк»?
ashleedawg

145

Я всегда использую CDN (сеть доставки контента) от 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

25
XVIDEOS использует это решение сейчас: P
Сёго Макишима

Мне здесь что-то не хватает ... Разве этот подход не предполагает, что jQuery, загруженный через CDN, загрузится и будет интерпретирован до того, как будет интерпретирована следующая строка ( !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:

  • кэширование, хорошее для производительности, больше пользователей, вероятно, уже имеют его, и он загружается параллельно
  • если когда-либо, heaver disable cdn выйдет из строя. ты пьян.
  • если новая версия ломает ваши существующие плагины или сайт, вы, возможно, узнаете об этом слишком поздно

Локально:

  • возможна разработка без подключения к сети
  • можно по-прежнему получать некоторые преимущества в производительности за счет сжатия с помощью сжатия, помимо минимизации

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% веб-сайтов в мире. Готов поспорить, вы не Facebook с миллионами онлайн-пользователей по всему миру, вы не 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.