Техническая поддержка сайта после запуска
Запуск сайта часто воспринимают как финишную черту: дизайн утверждён, тексты загружены, домен привязан, студия получила последний платёж — можно забыть о проекте и заниматься бизнесом. Но…
Читать статью →Помните, как раньше на многих сайтах работала форма обратной связи? Нажимаешь «Отправить», страница белеет, долго грузится, и в итоге открывается отдельная страница с надписью «Спасибо, ваше сообщение получено». Если в форме была ошибка, приходилось возвращаться назад, а введённые данные часто пропадали. Сейчас такое поведение выглядит архаично: пользователи привыкли, что сайт реагирует мгновенно и не перезагружается по каждому поводу.
За этой «живостью» стоит технология AJAX — способ обмениваться данными с сервером в фоне. А долгое время самым популярным инструментом для её использования была библиотека jQuery. Она до сих пор работает на огромном числе сайтов, включая многие сайты на WordPress и других популярных CMS. В этой статье разберёмся, что это такое, где эти технологии полезны бизнесу, какие у них ограничения и когда стоит выбирать более современные подходы.
AJAX — это не язык и не программа, а приём. Его суть в том, что JavaScript на странице отправляет запрос на сервер и получает ответ, не перезагружая страницу целиком. Получив данные, скрипт обновляет только нужную часть: показывает сообщение об успешной отправке, подгружает новые товары, пересчитывает сумму в корзине.
Название исторически расшифровывается как «асинхронный JavaScript и XML», но XML сейчас почти не используется: данные обычно передаются в формате JSON или сразу готовыми кусками HTML. Слово «асинхронный» здесь главное — оно означает, что пользователь может продолжать работать со страницей, пока запрос идёт на сервер и обратно.
Вы наверняка сталкивались с AJAX десятки раз за день, даже не замечая этого:
Всё это — обмен данными с сервером в фоне. Человек не видит самого запроса, он просто получает быстрый отклик.
jQuery — это библиотека на JavaScript, то есть набор готовых функций, который подключается к сайту одним файлом. В своё время она решила сразу несколько больших проблем веб-разработки.
Во-первых, разные браузеры по-разному понимали один и тот же JavaScript-код. То, что работало в одном, ломалось в другом, и разработчикам приходилось писать отдельные варианты кода. jQuery сглаживала эти различия: пишешь один раз — работает везде. Во-вторых, она сильно сокращала код. Задачи, которые требовали десяти строк на «чистом» JavaScript, на jQuery укладывались в одну. В-третьих, вокруг неё выросла огромная экосистема плагинов: слайдеры, галереи, маски ввода, календари, всплывающие окна.
Отдельно jQuery сделала AJAX доступным для массовой разработки. Отправить форму в фоне или подгрузить кусок страницы можно было буквально парой строк. Именно поэтому на ней построено так много сайтов, тем и плагинов, которые работают до сих пор.
Со временем браузеры стали гораздо более единообразными, а сам JavaScript получил встроенные удобные функции для работы с элементами страницы и запросами к серверу. Многое из того, ради чего раньше подключали jQuery, теперь делается стандартными средствами. Поэтому в новых проектах её всё чаще не используют.
Но это не значит, что jQuery «плохая» или «устаревшая» в смысле опасности. Она поддерживается, обновляется и надёжно работает. Если ваш сайт её использует и всё функционирует как надо, переписывать его только ради отказа от библиотеки обычно нет экономического смысла.
Интерактивность ради интерактивности — плохая идея. Но в ряде мест фоновая подгрузка заметно улучшает пользовательский опыт и напрямую влияет на конверсию.
Форма, которая отправляется без перезагрузки, показывает ошибки прямо рядом с полем и сохраняет введённые данные, теряет заметно меньше заявок. В одном из наших проектов — сайте небольшой логистической компании, которая возит грузы между Калининградом и материковой Россией, — после переделки формы расчёта на фоновую отправку с мгновенной проверкой полей количество завершённых заявок выросло примерно на 18% за полтора месяца.
Добавление товара без перехода на другую страницу позволяет покупателю продолжать выбор. Если после каждого клика «В корзину» человека перебрасывает в корзину, он теряет место в каталоге и часто уходит. Фоновое добавление с небольшим всплывающим подтверждением — стандарт для любого современного магазина.
Когда в каталоге сотни позиций, удобный фильтр решает многое. Пользователь отмечает параметры, и список мгновенно сужается. При этом важно, чтобы адрес страницы тоже менялся: тогда отфильтрованной подборкой можно поделиться, а поисковики смогут проиндексировать полезные сочетания фильтров.
Расчёт стоимости ремонта, изготовления мебели, аренды оборудования. Если расчёт простой, его можно выполнить в браузере. Если цены хранятся в базе и часто меняются, калькулятор запрашивает их с сервера — и снова через AJAX.
Выбор свободного времени у мастера, даты заезда в гостевой дом, места на экскурсии по Куршской косе. Пользователь выбирает день, а сайт тут же подгружает доступные слоты. Без фонового запроса пришлось бы перезагружать страницу на каждый клик по календарю.
Прежде чем заказывать «живой» элемент, сформулируйте, какую проблему пользователя он решает. Если ответ звучит как «чтобы было современно», скорее всего, бюджет лучше потратить на что-то другое.
Фоновая загрузка данных делает сайт удобнее, но при неаккуратной реализации создаёт проблемы, которые не видны сразу.
Если важный контент — описания товаров, отзывы, статьи — подгружается только скриптом после открытия страницы, поисковый робот может его не увидеть. Современные роботы Яндекса и Google умеют выполнять JavaScript, но делают это не всегда, с задержкой и не во всех случаях. Основное содержание страницы должно приходить сразу в HTML, а подгружаться в фоне — только дополнительное.
Подгрузка товаров при прокрутке удобна на телефоне, но имеет минусы. До подвала сайта с контактами становится невозможно добраться. Если пользователь ушёл на карточку товара и вернулся назад, он часто оказывается в начале списка. Хороший компромисс — кнопка «Показать ещё» вместо автоматической подгрузки и сохранение позиции при возврате.
При обычной перезагрузке браузер сам показывает, что идёт загрузка. При фоновом запросе этим должен заниматься разработчик. Если после нажатия кнопки ничего не происходит две-три секунды, человек нажимает ещё раз, и в итоге в CRM прилетают три одинаковые заявки. Индикатор загрузки и блокировка кнопки на время отправки — обязательные детали.
Сервер может не ответить, соединение может пропасть, особенно на мобильном интернете в дороге. Если скрипт никак не обрабатывает такую ситуацию, пользователь остаётся в неведении: отправилась заявка или нет. Нужно явное сообщение об ошибке и возможность повторить попытку.
Фоновые запросы — это такие же обращения к серверу, как и обычные. Их можно подделать, отправить автоматически тысячами, использовать для перебора данных. Поэтому серверная часть должна проверять каждый запрос: защищать от спама, проверять права доступа и не доверять данным, пришедшим из браузера.
Этот вопрос мы слышим регулярно, и ответ зависит от ситуации.
| Ситуация | Что разумно | Почему |
|---|---|---|
| Сайт на WordPress, тема и плагины уже используют jQuery | Оставить jQuery | Библиотека всё равно загружается, переписывание не даст выигрыша |
| Новый лендинг или сайт-визитка | Чистый JavaScript | Меньше вес страницы, нет лишней зависимости |
| Сложное веб-приложение, личный кабинет | Современный фреймворк | Проще управлять большим количеством состояний и данных |
| Старый сайт с проблемами скорости | Аудит и точечная оптимизация | Часто тормозит не jQuery, а десятки плагинов вокруг неё |
| Нужен один конкретный плагин, есть только на jQuery | Взвесить альтернативы | Ради одного слайдера подключать библиотеку целиком не всегда оправдано |
Сама jQuery весит около 30 килобайт в сжатом виде — это немного по сравнению с одной фотографией. Проблемы со скоростью обычно создаёт не она, а то, что на неё навешано: несколько версий библиотеки на одной странице, устаревшие плагины, скрипты, загружаемые на всех страницах, хотя нужны на одной.
Чтобы разработчик понял задачу и правильно её оценил, опишите не технологию, а сценарий. Не «сделайте AJAX-фильтр», а «покупатель выбирает размер и цвет, и в списке остаются только подходящие товары; при этом адрес страницы меняется, и подборку можно отправить в мессенджере».
Полезно заранее продумать ответы на несколько вопросов:
По нашему опыту, простая фоновая отправка формы с проверкой полей занимает от 3 до 6 часов работы. Фильтр каталога с изменением адреса — от 2 до 5 дней в зависимости от количества параметров и CMS. Сложный конфигуратор с расчётом и сохранением заказа может потребовать две-три недели. Стоимость пропорциональна: от нескольких тысяч рублей за форму до нескольких десятков тысяч за серьёзный инструмент.
После запуска любого интерактивного элемента настройте на него цели в Яндекс Метрике. Так через месяц будет видно, пользуются ли им посетители и окупилась ли разработка.
AJAX — это приём, позволяющий сайту обмениваться данными с сервером без перезагрузки страницы. Благодаря ему работают подсказки в поиске, фоновая отправка форм, корзины, фильтры и календари бронирования. jQuery долгое время была главным инструментом для таких задач и до сих пор надёжно работает на множестве сайтов, хотя в новых проектах её всё чаще заменяет стандартный JavaScript.
Живые элементы приносят пользу, когда решают конкретную проблему пользователя: экономят его время, снижают число ошибок, не дают потерять место в каталоге. Но при небрежной реализации они вредят индексации, создают дубли заявок и путают посетителей. Поэтому важна не сама технология, а продуманный сценарий: что видит человек во время загрузки, при ошибке и после успешного действия. Хорошая интерактивность почти незаметна — сайт просто кажется быстрым и понятным.
Нужен сайт или доработка текущего? Расскажите о задаче — через 24 часа покажем эскизы решения, а к готовому сайту добавим месяц продвижения в подарок.
Обсудить проект
Запуск сайта часто воспринимают как финишную черту: дизайн утверждён, тексты загружены, домен привязан, студия получила последний платёж — можно забыть о проекте и заниматься бизнесом. Но…
Читать статью →Откройте свой сайт на телефоне, потом на планшете, потом на ноутбуке и на большом мониторе в офисе. Если везде текст читается без увеличения, кнопки нажимаются с первого раза, а меню не…
Читать статью →Новый сайт обычно запускают в спешке: дизайн утвердили, тексты кое-как собрали, хостинг оплатили — и кнопка «опубликовать» нажимается вечером в пятницу. О поисковой оптимизации вспоминают…
Читать статью →← HTML, CSS и JavaScript: что делает каждый слой сайтаБезопасность сайта: базовые меры защиты →
Оставьте контакты — перезвоним или напишем в течение рабочего дня.