Почему я должен использовать CDN Google для jQuery?

169

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

Только потому, что так быстрее загружается?

Yvette
источник
1
Связанный: stackoverflow.com/questions/547384/…
Йорн Шоу-Роде
2
Никто не упоминает, что политика Google была в отношении горячей ссылки на их файлы JS (данная горячая ссылка обычно не одобряется), поэтому здесь приводится URL-адрес, где Google упоминает, что это нормально, и больше о библиотеках, которые они размещают: code.google.com/apis/ajaxlibs/ Документация / index.html
Loftx
Возможен ли дубликат ссылки на облако API Google для библиотек JS?
Арджан
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. При создании приложения для интрасети, где веб-сервер размещен в той же сети, что и клиенты. Если вы используете Google CDN jQuery, вы будете звонить в Интернет, а не на веб-сервер в локальной сети. Это увеличивает пропускную способность для вашей организации и медленнее.

  2. Когда вы хотите запустить приложение в автономном режиме . (Весьма связано с первой проблемой). Если вам нужно работать в среде разработки (управляемой, например, с помощью Bower ), вам может потребоваться, чтобы ваше приложение работало без подключения к Интернету (например, в поезде :)

  3. Когда вам нужно настроить его . Например, если вы используете Grunt для сборки библиотеки, чтобы использовать только определенные модули или задать имя AMD

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

Кроме того, Microsoft размещает jQuery на своих CDN. Это еще один выбор, сравнимый с использованием размещенного в Google jQuery.

Лэнс Фишер
источник
35
Просто к сведению, что вы можете использовать серверы Google для предоставления SSL-версии размещенных библиотек JavaScript. ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js работает.
Аарон Вагнер
Приятно знать, Аарон. Спасибо.
Ланс Фишер
3
+1 за упоминание Microsoft. Google получает путь слишком много кредитов имо.
Да, Барри,
7
Также к вашему сведению: схемы относительных гиперссылок src="//ajax.googleapis.com/..."работают.
Джон Гитцен
3
А также рассмотрим cndjs
Брайс
29

Это исследование по TJ VanToll убедили меня в том , что это лучше сцепить JQuery с другими скриптами , а не загрузить его из CDN.

Причина заключается в задержке загрузки jQuery на мобильных устройствах:

«В 2012 году среднее время RTT в мобильной сети в Соединенных Штатах составляло 344 мс. И эти 344 мс применяются не только к каждому HTTP-запросу, который в настоящее время составляет в среднем 93 веб-страницы, но также к каждому поиску DNS и TCP-соединению ... В то время как средние значения RTT улучшаются, можно получить лишь небольшой дополнительный выигрыш, поскольку современные сети находятся в пределах небольшого фактора от теоретического предела, продиктованного физикой ".

Он также цитирует этот пост от Стива Соудерса, в котором показано, почему вы на самом деле вряд ли получите выгоду от кеширования при использовании CDN:

«Из-за фрагментации поставщиков CDN, версий jQuery и использования протокола (http против https) шансы получить попадание в кэш CDN шокирующе низки - и загрузка из внешнего домена может выполнить не один, а три обходные пути (поиск DNS, TCP-соединение и HTTP GET). "

Кантера
источник
3
Это больше не верно для HTTP2 и SPDY. Сегодня вы можете разместить все свои внешние ресурсы в CDN, таком как Cdnjs.com или где-то еще, и все файлы будут загружены с использованием одного и того же запроса. Это в основном то же самое, что и сцепление.
Рикардо Поло Харамильо
13

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

Преимущества, которыми делятся здесь и в других местах, являются теоретическими. Просто наткнулся на углубленный анализ использования 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 CDN примерно на 0,5% всех страниц. Во время общего сеанса просмотра я посещаю множество страниц, особенно те небольшие ссылки на сайты, как, например, та, на которой он размещен. Или блог-сайты. Я легко захожу на 30 уникальных сайтов в день, через неделю шансы не кэшировать их довольно малы. Хотя он может кэшироваться не для всех ваших пользователей, люди, которые широко используют Интернет, почти всегда будут кэшировать их, потому что они посещают более 1 уникального домена в общей сложности.
Aidiakapi
8

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

Джошуа Мэддокс
источник
Я не согласен @tmthydvnprt. Вопрос самоуверенный, так что именно в этом и заключается основная вина, но это действительно отвечает на вопрос.
До свидания StackExchange
1
Я пришел сюда, чтобы то же самое. Если пользователи находятся в Китае, большая часть всего от Google заблокирована большим межсетевым экраном. Тем не менее, это, вероятно, не проблема, так как многие люди в Китае используют VPN-сервисы, и вы, вероятно, в любом случае не хотите ориентироваться на китайский рынок.
Джастин
0

Некоторые хорошие ответы здесь на «Почему вы должны ...» и «Почему вы не должны ...»

Я просто хочу добавить список альтернатив в Google, если вы действительно хотите загрузить jQuery из CDN.

Подводя итог, вы в целом улучшаете общую производительность своего сайта / приложения.

EdwardM
источник
0

Назначив CDN сервисному работнику, вы можете загружать CDN один раз за время жизни клиента, а не каждый раз, когда обновляете свой код.

Оскар Гардиазабаль
источник