AJAX представляет собой комплекс современных технологий, позволяющих создавать интерактивные веб-приложения нового уровня. Использование AJAX привело к возможности динамического изменения контента веб-страницы: страница сама может догружать нужные пользователю данные, при этом полностью не перегружаясь, а загружая лишь изменившиеся данные. что не только удобно, но и значительно ускоряет время загрузки страниц сайта, даже если страница нагружена тяжеловесными картинками. Практически и психологически это очень удобно, т.к. не заставляет посетителя сайта длительно дожидаться появления страницы сайта на своем мониторе, особенно если скорость интернета низкая.
Сам термин AJAX является сокращением и расшифровывается как "Asynchronous JavaScript And XML" (Aсинхронный JavaScript и XML). AJAX - это не самостоятельная технология, а синтез технологий, которые сами по себе существовали еще за несколько лет до появления термина AJAX. Так еще в 1996 году в браузере Internet Explorer была реализована поддержка тэга IFRAME, позволяющего загружать контент во фрейм без необходимости перезагрузки всей страницы. Поскольку тэг IFRAME и его аттрибут SRC позволяют осуществлять загрузку любого URL во фрейме, то при использовании JavaScript это в принципе позволяет добиться характерных для AJAX эффектов.
AJAX — это концепция использования нескольких смежных технологий.
AJAX базируется на следующих основных принципах:
История AJAX
Впервые термин AJAX был публично использован 18 февраля 2005 в статье Джесси Джеймса Гарретта (Jesse James Garrett)
«Новый подход к веб-приложениям». Гарретт придумал термин, когда ему пришлось как-то назвать новый набор технологий,
предлагаемый им клиенту.
Однако в той или иной форме многие технологии были доступны и использовались гораздо раньше, например в подходе
«Remote Scripting», предложенным компанией Microsoft в 1998, или с использованием HTML элемента IFRAME, появившегося
в Internet Explorer 3 в 1996 году.
AJAX стал особенно популярен после использования его компанией Google в сервисах Gmail, Google Maps и Google Suggest.
Преимущества AJAX
Недостатки
AJAX в действии
В отличие от множества "перспективных" подходов AJAX очень нагляден. Сайт, сделанный с помощью AJAX, субъективно работает гораздо быстрее обычного сайта. По крайней мере, он быстрее откликается на любые действия пользователя. Классические и, пожалуй, лучшие примеры использования AJAX - проекты Google Maps и Gmail - и это при том, что программисты Google во время работы над ними ни о каком AJAX и знать не знали. Запросы пользователей обрабатываются очень быстро, потому что использование идеологии AJAX позволяет не перезагружать страничку целиком, а обновлять на ней только те элементы, которые требуют обновления. У того же Gmail с недавнего времени есть обычный HTML-интерфейс для совместимости со старыми браузерами, и любой желающий может убедиться в том, что работает он в несколько раз медленнее, чем классический интерфейс Gmail.
Как работает AJAX
AJAX расшифровывается как Asynchronous JavaScript + XML (асинхронный JavaScript+XML) и технологией в строгом смысле слова не является. Это просто аббревиатура, обозначающая подход к созданию веб-приложений с помощью следующих технологий:
Если в стандартном веб-приложении обработкой всей информации занимается сервер, тогда как браузер отвечает только за взаимодействие с пользователем, передачу запросов и вывод поступившего HTML, то в AJAX-приложении между пользователем и сервером появляется еще один посредник - движок AJAX. Он определяет, какие запросы можно обработать "на месте", а за какими необходимо обращаться на сервер.
Поведение сервера тоже изменилось. Если раньше на каждый запрос сервер выдавал новую страницу, то теперь он отсылает лишь те данные, которые нужны клиенту, а HTML из них прямо в браузере формирует движок AJAX.
Асинхронность проявляется в том, что далеко не каждый клик пользователя доходит до сервера, причем обратное тоже справедливо - далеко не каждая реакция сервера обусловлена запросом пользователя. Большую часть запросов формирует движок AJAX, причем его можно написать так, что он будет загружать информацию превентивно, предугадывая действия пользователя.
Понятно, что с такой схемой работы качественная нагрузка на сервер меняется - если раньше запросов было мало, но каждый из них требовал значительных ресурсов (серверу нужно вытащить информацию из БД, сформировать из нее веб-страницу и отдать браузеру), то теперь задача сервера упрощается (формировать веб-страницы не нужно, да и объем передаваемых данных меньше), но запросов обрабатывать приходится больше.