Быстрый поиск по сайту: где на самом деле теряются секунды
Разбор пути запроса от нажатия клавиши до отрисованной выдачи и мест, где время уходит незаметно.
«Поиск тормозит» почти никогда не означает, что медленно работает поисковый движок. Разберём путь запроса и посмотрим, где время уходит на самом деле.
Из чего складывается время
Пять участков между нажатием клавиши и увиденной выдачей:
- Подсказки при вводе. Запрос на каждую букву, если не настроена задержка.
- Отправка запроса. Сеть, особенно мобильная.
- Работа поиска. Собственно подбор и ранжирование.
- Сборка страницы. Шаблон и дополнительные запросы за ценами и остатками.
- Отрисовка. Картинки, шрифты, скрипты.
Третий участок часто самый быстрый, а винят обычно его.
Подсказки: самая частая причина
Строка, отправляющая запрос на каждое нажатие, при слове из десяти букв делает десять обращений. Восемь из них не нужны никому.
Что помогает:
- задержка перед отправкой около четверти секунды;
- отмена предыдущего запроса при новом;
- минимальная длина запроса от двух-трёх символов;
- запоминание повторных строк на стороне браузера.
Одна эта настройка часто убирает ощущение тормозов целиком.
Сборка страницы: скрытый расход
Выдача из двадцати карточек, где на каждую делается отдельный запрос за ценой и остатком, — это двадцать обращений к базе. Поиск отработал за миллисекунды, а страница собиралась секунду.
Лечится одним запросом на все позиции сразу. Признак проблемы — время растёт пропорционально числу карточек на странице.
Картинки: то, что видит человек
Скорость воспринимается по моменту, когда выдача выглядит готовой. Если карточки появились, а картинки догружаются рывками, ощущение будет «медленно» даже при хороших цифрах.
Что делать: задавать размеры изображений заранее, отдавать выдаче уменьшенные копии, откладывать загрузку того, что ниже экрана.
Что и чем мерить
- Время ответа поиска — в журнале приложения, отдельно от сборки страницы.
- Время до готовой выдачи — инструментами браузера, вкладка сети.
- Число запросов на одну выдачу — там же. Больше пяти обычно значит, что данные собираются поштучно.
Мерить надо на мобильном соединении: на офисном интернете проблемы не видно.
Когда медленно из-за смысловых моделей
У смыслового поиска есть дополнительный участок: превращение запроса в вектор. Он занимает время и зависит от внешнего сервиса.
Что помогает: запоминание частых запросов, разумный предел ожидания, откат к обычному поиску при недоступности модели. Пользователь никогда не должен ждать неопределённо долго.
Про то, как устроена векторная часть — векторный поиск: что это простыми словами.
Порядок работ
- Настроить задержку и отмену в подсказках.
- Свести поштучные запросы за ценами в один.
- Проверить размеры и вес картинок в выдаче.
- Замерить время самого поиска отдельно.
- Оптимизировать поиск, только если после первых четырёх он остался узким местом.
Пункт пятый нужен редко.
Вывод и следующий шаг
Медленным поиск делают подсказки без задержки, поштучные запросы данных и тяжёлые картинки. Сам подбор редко бывает узким местом.
Следующий шаг: откройте вкладку сети в браузере, наберите запрос из десяти букв и посчитайте, сколько обращений ушло. Если десять и больше, начинать надо с подсказок.
Частые вопросы
Какая задержка подсказок нормальна?
Около четверти секунды. Меньше даёт лишние запросы, больше ощущается как задумчивость.
Сколько должен занимать сам поиск?
Доли секунды на каталогах обычного размера. Заметная задержка означает проблему в данных или в сборке страницы.
Мешает ли смысловой поиск скорости?
Добавляет участок, но результат можно запоминать. Важнее иметь предел ожидания и запасной путь.
Сколько карточек показывать на странице?
Столько, сколько собирается одним запросом за данными. Обычно двенадцать-двадцать.
На чём мерить?
На мобильном соединении и среднем телефоне. Офисные замеры скрывают проблему.
Помогает ли запоминание выдачи?
Помогает на частых запросах. Главное — сбрасывать её при изменении цен и наличия.