Об Ajax

По-английски AJAX произносится как эй-джэкс, по-русски довольно распространено «аякс».
Вроде бы все красиво, но есть несколько подводных камней, о которых я вам ниже и расскажу.

Ajax — не просто акроним, это идея

Вообще Ajax и является акронимом от «Асинхронный JavaScript и XML», это не раскрывает его идеологию. Ajax — идеология, которая гласит, что для работы серверного веб-приложения, совершенно не обязательно перезагружать всю страницу, бесполезно гоняя данные от сервера к клиенту и обратно. Использование Ajax’a позволяет сделать веб-приложение более гибким и современным, позволяя пользователям работать с веб-приложением более продуктивно и удобно.

Это по-настоящему JavaScript

Ajax-приложения пишут на JavaScript и, обычно, используют объект XMLHttpRequest для передачи данных (для браузеров от Microsoft — ActiveXObject(Microsoft.XMLHTTP) — ничего не поделаешь). Объект XMLHttpRequest был одобрен World Wide Web Consortium. Так как технология получила широко распространение относительно только что, то никакого общего стандарта нет, как следствие — различные браузеры могут по разному понимать Ajax либо просить особо подхода, яркий пример чего — браузеры от Microsoft. Для более глобальной совместимости можно применять иные технические решения, например фреймы, кукисы, Java-аплет либо Flash. Впрочем в случае, если фреймы и куки не всегда справляются с возложенной задачей, то Java-аплет либо Flash чересчур тяжеловесны. Вы когда-то в страшном сне представляли админку WordPress’a сделанную целиком на флеше?

Независимо от того, используете вы Ajax либо нет, JavaScript поднялся до новых, раньше не доступных ему, высот. Сейчас это полноценный инструмент для современного веб-мастера, игнорировать его более нет смысла, он полезен и удобен для пользователя. К примеру я активно начал учить JavaScript, в случае, если раньше я довольствовался каким-то общим представлением и написанием несложных скриптов — то теперь я начал рыть глубже, так как я собираюсь работать с Ajax более тесно.

Разработчики, которые считают JavaScript вредным или второсортным языком, избегают его как только могут. Впрочем в случае, если перед вами стоит задача написать Ajax-приложение, вам все равно придется применять JavaScript. Аналогией могут служить разве что Java-аплеты либо Flash.

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

XML вовсе необязателен

Не смотря на то, что «X» в акрониме Ajax пошла именно от XML, его использование вовсе необязательно. Весьма допустимо применять просто текст, допустим, с разделителями, а то и просто части HTML кода (что я и делаю, в общем-то, скрипт, к которому отправлялся запрос генерирует готовый фрагмент кода, который просто заменяет прошлый код). А кроме того кто-нибудь использует YAML разметку.

XMLHttpRequest пока нехорошо работает с бинарным форматом данных, в отличие от Flash. Но в ближайшее время такая ситуация, по-моему, будет исправлена. Уже теперь есть фиксы, костыли — но все не то.

Как вывод — проанализируйте, какой формат данных в вашем случае удобней и быстрее обрабатывается. Например для несложных манипуляций замечательно подойдет YAML либо CSV, а XML будет излишне толстым 🙂

Рассчитывайте и планируйте увеличение HTTP запросов

Очевиднейшая проблема для веб-мастера заключается в том, что что веб-приложение отныне будет отсылать не пару сотен Kb раз, например, в 10 минут, а более зачастую более мелкими объемами. На деле это означает возможность появления задержек в обработке Ajax-запросов и усиления нагрузок на веб-сервер. Это следует принимать во внимание еще на уровне проектирования Ajax-приложения.

Оптимизируйте Ajax-запросы осторожно

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

Впрочем есть решение лучше — кеширование запросов. Причем не утруждайте себя изобретением велосипеда с попыткой закешировать это на строноне клиента — кешируйте прямо на сервере. Ajax-приложение выйграет от данного немало больше, чем от сжатия.

Помните о максимальном числе соединений

Ajax-приложения ограничены спецификацией HTTP, которая позволяет открывать в одно и то же время не более двух соединений к одному сетевому адресу. Отличная новость в том, что в большинстве случаев данные ограничения отсутствуют. Впрочем могут возникнуть проблемы с браузером, либо с сетевым администратором. Впрочем последним, по хорошему, закрыть бы на это глаза.

Следите за полученными ответами

В традиционном веб-приложении, разработчики обычно не заморачиваются порядком получения данных пользователями. Да на самом деле, это и не требуется. Ajax такого не любит. Важно соблюдать очередность «отправка-прием-обработка полученного», в противном случае могут возникнуть совершенно внезапные проблемы.

Пристально следите за ошибками

Уже немало лет пользователи, при проблемах с отображением страницы нажимают кнопку «Назад» в браузере. В современных Ajax-приложениях это также важно. Же обычной gif картинки мало для определения состояния запроса.

При появлении ошибки отправляйте себе нотисы, для их анализа и ликвидации ошибок и проблем. А пользователю выведите что-то дружелюбное после определенного времени. Стоит также признать, что инновационные JS/Ajax фреймворки не умеют нормально работать с тайм-аутом.

Старая сказка о безопасности

В действительности Ajax-приложение так же безопасно, традиционное и как. Заголовки одинаковы, средства и способы коммуникации — также одинаковы. Вообще стоит отдельной строкой уделить внимание некоторым вещам, же классические ошибки могут спокойны стать наследством Ajax-приложения.

Это XSS — сам по себе он не является новинкой, просто с распространением Ajax-приложений начал набирать популярность. Хотя бы фильтруйте каждой HTML код, приходящий от пользователя. Так же проверяйте HTTP Referer — так как это важно.

Теперь сетевые профессионалы приходят к выводу, что ненадлежащая защита сайта, который активно использует JavaScript, может привести не только к несанкционированному доступу к вашему серверу, но и к компьютеру вашего посетителя. Будьте аккуратны и осторожны, же после будет неприятно узнать, что из-за вашей лени у кого-то увели аську либо кошелек.

Этот текст является свободным переводом с изменениями и дополнениями статьи 10 things IT needs to know about Ajax.

Ну, а если Ваши финансы позволяют отправиться на отдых куда-нибудь подальше от мрачной и серой российской действительности, забыть обо всех «прелестях» местной погоды, то могу посоветовать отправиться в страну юго-восточной Азии — Вьетнам.  И зайдя на один из сайтов, вы можете оформить он-лайн тур во Вьетнам, буквально не вставая из-за компьютера.

Отмечено , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *