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 — отличный шаг в правильном направлении.