Xiper

Почему jQuery лучше грузить с Google

Автор: Евгений Рыжков Дата публикации:

jQuery самый популярный javascript фрэймворк — это факт. Google в своей миссии «разогнать веб» не мог это оставить незамеченным. Поэтому они сделали специальное хранилище, в котором размещены минимизированные версии jQuery. Каждый сайт может подключить плагин от туда:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

или так

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
// подключаем нужную версию jquery
google.load("jquery", "1.4.3");
google.setOnLoadCallback(function() {
// твой код здесь.
});
</script>

Если хочешь чтобы твой сайт грузился быстрее, тогда подключать jQuery с Google-хранилища — это один из верных шагов в этом направлении. Сомневаешься? Вот тебе несколько доводов:

  1. Это хранилище используют многие проекты, среди которых присутствуют монстры веба с миллионами посетителей такие как twitter. Для твоего проекта это значит, что у многих пользователей плагин уже находится в кэше их клиентов и тогда jQuery загрузится моментально. Если нет в кэше клиента, тогда большая вероятность, что он будет получен из одного из ближайших кэшей прокси. А это тоже быстрее, чем загружать его с удаленного сервера.
  2. Если даже плагин не сохранен ни в одном из кэшей (например, когда подключается совсем свежая версия jQuery) все равно файл будет скорей всего доставлен быстрее пользователю, ведь Google обладает широкой сетью серверов и плагин будет взят из ближайшего к пользователю.
  3. Серверы Google обладают большими ресурсами, чем серверы большинства рядовых сайтов. Поэтому на свой запрос пользователь ответ получит быстрее.
  4. На сервере Google уже настроено gzip сжатие, которое сжимает дополнительно файл примерно в три раза. Например, jquery 1.4.3 в сжатом виде весит 76Kb. Если к нему применить дополнительно gzip, выйдет 26Kb. Этот самый gzip не всегда есть возможность настроить на своем сервере (особенно если используется виртуальный хостинг). Даже когда такая возможность есть, этим воспользуется далеко не каждый разработчик.

И не только jQuery

На самом деле таким образом можно подключить еще ряд популярных библиотек:

  • jQuery UI
  • chrome-frame
  • dojo
  • ext-core
  • mootools
  • prototype
  • scriptaculous
  • swfobject
  • yui
  • webfont

Уверен, что со временем этот список будет только пополняться.

Ложка дегтя

Есть ряд и недостатков от использования мощностей Google:

  • Зависимость от третей стороны: если упадут сервера гугла, понятно что пользователь может не получит жизненно необходимый плагин. Другое дело, что вероятность того, что упадут все сервера гугла по сравнению с падением одного твоего сервера ничтожна мала.
  • Если гугл забанил IP пользователя (или наоборот, провайдер забанил гугл), соответственно пользователь тоже не получит плагин.
  • Потраченное время на дополнительный DNS запрос и установку соединения с новым хостом. Но ресурсы и распределенная сеть серверов Google почти полностью нивелирует этот недостаток.
  • Нет возможности получить урезанную версию плагина. Некоторые плагины позволяют делать сборку своего кода, чтобы пользователь оставлял только нужное ему, тем самым сокращая объем скрипта. Или продвинутые разработчики руками выбрасывают «лишнее». Вот этой самой возможности они будут лишены: с гугла будет грузится все время полная версия.

Несмотря на эти недостатки большинство обычных проектов получит «ускорение» от использования Google-хранилищ.

update by cupivan — Яндекс решили во многом не парится и тупо копировать идеи гугла себе: у них тоже есть свое хранилище библиотек. Интересно было бы сравнить, что и в каких случаях будет работать быстрее.

Материалы

  • Google Libraries API — Developer's Guide
  • Хостинг JavaScript-библиотек от Яндекс