Статьи

Служите JavaScript фреймворку быстрее с помощью API библиотек Google AJAX

Google объявил о расширении их службы API Google AJAX : API библиотеки AJAX . Они собрали коллекцию наиболее распространенных библиотек JavaScript и сделали их доступными в своей сети доставки контента.

Общепринятая критика в отношении библиотек фреймворка JavaScript заключается в том, что один и тот же код загружается со всех сайтов, которые их используют, что приводит к потере пропускной способности и созданию дублирующихся файлов в локальном кэше браузера. Инициатива Google — попытка облегчить это бремя и создать некий JavaScript Shangri La, в котором все фреймворки тусуются вместе, эффективно используя свое время и, возможно, пея. если есть лучший способ испортить приличный фильм о выживании в авиакатастрофе, чем петь, я бы его не видел! Фрэнку Капре есть за что ответить.

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

Пользоваться сервисом просто. Вы можете напрямую ссылаться на библиотеки через URI следующим образом:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js"> </script> 

Кроме того, вы можете использовать API Google таким образом:

 <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("prototype", "1.6.0.2"); </script> 

Первый аргумент — это имя библиотеки, а второй — желаемая версия.

JavaScript, который идет по проводам, архивируется при поддержке браузером (библиотека прототипов 124K сжимается до 30K) и поставляется с соответствующими заголовками кэша. Отличной особенностью сервиса является контроль над управлением версиями. Приведенные выше примеры загружают очень специфическую версию Prototype: 1.6.0.2 . Но вы можете указать любой уровень приращения, и он будет работать до последней версии. Например, если вы укажете версию 1.6 вы получите самую последнюю версию 1.6 , что бы это ни было. То же самое происходит, если вы укажете версию 1 , и если вы не укажете какую-либо версию, вы получите последнюю доступную версию.

Тем не менее, я заметил кое-что еще более при тестировании: значение заголовка Cache-Control корректируется в соответствии с запросом. При указании конкретной инкрементной версии значение заголовка выглядит следующим образом:

Cache-Control: public, max-age=31536000

Это сообщает любому механизму кэширования, который заботится о соблюдении заголовков Cache-Control, о том, что содержимое безопасно кэшировать до года. Когда указана более общая версия, вы получите это:

Cache-Control: public, max-age=3600, must-revalidate, proxy-revalidate

Это информирует кэши о том, что контент должен проверяться на предмет изменений ежечасно, чтобы обеспечить доставку последней версии.

В документации упоминается только управление версиями в связи с google.load API google.load но все следующие прямые URI, похоже, работают и предоставляют Prototype 1.6.0.2:

  • http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js
  • http://ajax.googleapis.com/ajax/libs/prototype/1.6/prototype.js
  • http://ajax.googleapis.com/ajax/libs/prototype/1/prototype.js

В настоящее время Google размещает:

Некоторые из этих библиотек также имеют уменьшенные версии.

На YouTube есть короткое видео, объясняющее, как все это работает, но, похоже, оно немного устарело; URI, используемый для прямого доступа к файлу JavaScript, не соответствует документации и не работает.

Объявляя об API на Ajaxian , Дон также сказал кое-что очень интересное о будущем этого вида услуг:

Если мы видим хорошее использование, мы можем работать с поставщиками браузеров для автоматической доставки этих библиотек. Затем, если они увидят URL-адреса, которые мы используем, они могут автоматически загружать библиотеки, даже специальные JIT-файлы, из своей локальной системы. Таким образом, сеть вообще не попала!

Несмотря на разглагольствования некоторых сварливых старых обманщиков , использование библиотек фреймворка JavaScript только увеличивается и улучшается. Я помню старые времена DHTML, когда каждый доступный скрипт имел свою собственную версию метода addEvent ; столько расточительного дублирования кода. Наличие общих структур остановило дублирование и предлагает полезный уровень абстракции. Я думаю, что новый сервис Google — отличный шаг в правильном направлении.