Google jQuery - это хорошо?

14

Есть ли НАСТОЯЩЕЕ осязаемое преимущество использования размещенной в Google библиотеки jQuery? Или мы просто скачаем его на наш сервер?

Что вы думаете об этом?

Лео
источник
1
Простой поиск в Google предоставил ответ ...
Francisco Presencia

Ответы:

18

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

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

Потенциальные недостатки:

  1. Домен может быть заблокирован (это довольно часто в таких местах , как Китай). Вы можете решить эту проблему с помощью локального запасного варианта ( см. Здесь, чтобы узнать, как это сделать ).
  2. Фрагментация номеров версий довольно высока, поэтому посетители сайта могут иметь много различных версий в кэше, но не тот , который вы ссылается ( см здесь для некоторой последней статистики ). Это проблема только при первой загрузке страницы.
DisgruntledGoat
источник
3
Можете ли вы опубликовать справку о том, как настроить локальный запасной вариант?
Стивен Остермиллер
1
Как указывает ранее Zistolen, еще одним преимуществом является то, что он будет загружать параллельно с вашими сайтами другие ресурсы. Возможно, вы захотите добавить это также к этому в противном случае великому ответу.
nathangiesbrecht
Это немного вводит в заблуждение. Браузеры загружают ресурсы параллельно, независимо от того, где они размещены, но существует ограничение на количество вещей, которые они будут загружать с одного хоста одновременно.
Тим Фонтан
Я пропустил это, если честно, ни здесь, ни там - файл может загружаться параллельно, но это также дополнительный поиск DNS. Кроме того, какая бы разница во времени ни была из этих, в любом случае незначительна.
Рассерженная шлюха
Справедливо. Но на быстрых соединениях, это не может привести к более быстрому общему времени загрузки, так как можно использовать больше «трубы»?
nathangiesbrecht
11

Еще один минус:

Использование CDN позволяет оператору CDN отслеживать посетителей сайтов. Вот почему они не стоят денег.

Jost
источник
Отслеживание точно, но не посетителей: и собственный jquery, и jquery CDN от google размещены на доменах, которые не устанавливают или не используют файлы cookie (это, вероятно, также является оптимизацией производительности), и в запросе нет действительно идентифицируемой информации. Поставщик CDN может получить представление об IP-адресах и некоторой статистике по строкам и ссылкам пользовательских агентов. Это, вероятно, ценно, но само по себе это не является огромным риском для конфиденциальности (если эти записи соотносятся с другой базой данных - скажем, персонализированной рекламой, размещаемой в аналогичное время - тогда, возможно, это может быть средством отслеживания).
Имон Нербонн
Я думаю, что можно принять как должное (в случае Google), что данные коррелируют с другими базами данных, так как почти все используют Google для поиска все время. То же самое и со шрифтами Google: я недавно пытался самостоятельно разместить шрифты на сервере, но обнаружил, что это очень сложно сделать. Google не запрещает это (с открытым исходным кодом), но они не предоставляют вам файлы в готовом виде: вы можете скомпилировать их самостоятельно (но нет файла makefile) или подделать запросы к серверы, которые используются для их нормальной доставки. Оба из них не выполнимо для не технаря.
Йост
Может быть. У меня нет никакой внутренней информации, поэтому сложно сказать наверняка. Я уверен, что он будет глючным и со значительными пробелами, однако: в большинстве мест, где я пользуюсь Интернетом, используется NAT, а у некоторых есть довольно много пользователей с похожими компьютерами (вероятно, идентичные строки UA) - было бы невозможно узнать, какие именно просьба прийти от кого. И, конечно же, что с кнопками AdSense и социальной сети, они могут иметь более надежные средства почти всегда, поэтому я могу представить, что они не беспокоятся. Что касается шрифтов - я скачал их несколько раз, так что я не совсем понимаю, что вы имеете в виду, говоря, что это сложно?
Имон Нербонн
Для ясности: я полагаю, что большинство посещаемых вами веб-сайтов могут и будут отслеживаться крупными сборщиками статистики с помощью кнопок общего доступа к социальным сетям (довольно распространенных) и рекламы, которые есть практически везде. Поэтому мне просто интересно, насколько ценна, возможно, вводящая в заблуждение информация из сильно кэшированных js-запросов - держу пари, не очень, поэтому я предполагаю, что они не утруждают себя попыткой лично идентифицировать людей, использующих JS, обслуживаемую CDN.
Имон Нербонн
Это не так кэшировано, как можно было бы подумать - при встраивании шрифтов, используя то, что Google предпочитает, вставляя ссылку CSS на fonts.googleapis.com, каждый просмотр страницы открывает соединение с Google (вы можете увидеть их в Firebug). Не имеет значения, кешируется или нет. Что касается загрузки: Можете ли вы указать мне место, где я могу скачать шрифты в высококачественном формате eot, woff, ttf и svg (те же версии, которые предоставляет Google, без внешних конвертеров)?
Йост
3

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

Я случайно предполагаю, что альтернативой является не просто размещение его локально, а конкатенация с другим локальным запросом - обычно нет веской причины не объединять, когда это возможно.

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

Если задержка равна 0, то распределение нагрузки по многим серверам может улучшить пропускную способность за счет использования многих серверов (не очень полезно, поскольку, вероятно, ограничения пропускной способности находятся рядом с клиентами, а не с серверами), но, что более важно, это может уменьшить объем передаваемых данных. немного за счет повышения эффективности кеширования.

Это зависит от вашего сценария, но я бы, как правило, ожидал, что задержка будет больше проблемой, чем пропускная способность, если ваши скрипты не слишком велики (чего нет в jquery). В этот момент обычно быстрее размещать jquery как часть объединенного локального файла.

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

В любом случае: гораздо более уместным будет, рассмотрели ли вы сначала основы; соответствующие заголовки кэширования, конкатенация, минификация и сжатие (желательно с высокой степенью сжатия). И вот в чем суть: если вы этого не делаете, то по крайней мере CDN будет, так что это победа ...

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

Имон Нербонн
источник
Кстати, есть некоторые побочные эффекты, выигранные с помощью только одного запроса: только заголовки составляют почти 1 КБ, что при полезной нагрузке 28 КБ не является ничем. GZIP лучше работает с большим количеством контекста, который сохраняет еще 0,5 кб. Издержки TCP, DNS, HTTPS могут легко добавить КБ здесь или там, и, что еще хуже, RTT. Вот почему для таких маленьких файлов CDN не так быстр, как вы думаете.
Имон Нербонн
1

Использование размещенной в Google библиотеки jQuery позволяет быстрее загружать вашу страницу. Действительно, библиотека загружается одновременно с вашей страницей, а не после.

Zistoloen
источник
Но как это влияет на загрузку страницы?
Лев
1
Локальные библиотеки также загружаются во время загрузки страницы. В обоих случаях загрузка ресурса начинается, когда (современный) браузер видит фрагмент кода, который запускает загрузку, что обычно происходит до загрузки всего документа. Посмотрите на этот скриншот Firebug для примера
Jost