Что такое пагинация и почему это не мелочь
Пагинация — разбиение длинного списка на порции. В категории на 2 000 товаров показать всё сразу невозможно: страница будет весить десятки мегабайт и не отрисуется на мобильном. Список режется на части, и пользователь двигается по ним последовательно.
Выглядит как чисто интерфейсное решение, но затрагивает три области сразу:
- SEO. Товары, до которых робот не дошёл, не попадают в индекс. В каталоге с плохой пагинацией индексируются первые страницы категорий и ничего больше — это буквально означает, что большая часть ассортимента невидима в поиске.
- UX. От паттерна зависит глубина просмотра, возможность вернуться к нужному месту списка и поведение кнопки «назад» из карточки товара.
- Производительность. Число товаров на странице определяет вес HTML, количество изображений и время до первой отрисовки.
Три паттерна и их последствия
| Критерий | Классические страницы | «Показать ещё» | Бесконечная лента |
|---|---|---|---|
| Отдельный URL у порции | Есть у каждой | Есть, если кнопка — ссылка с href | Обычно нет |
| Доступность для робота | Полная | Полная при корректной реализации | Только первая порция |
| Возврат из карточки товара | На ту же страницу | Требует восстановления состояния | Часто сбрасывает в начало списка |
| Глубина просмотра | Ниже, переход осознанный | Выше | Самая высокая |
| Ощущение конца списка | Есть, виден номер последней страницы | Есть | Отсутствует, пользователь «залипает» |
| Доступ к футеру | Свободный | Свободный | Футер недостижим |
| Нагрузка на клиент | Предсказуемая | Растёт с числом подгрузок | Память растёт неограниченно |
| Аналитика | Простая, событие = переход | Понятная | Сложно интерпретировать глубину |
На практике в e-commerce чаще всего работает гибрид: кнопка «Показать ещё», за которой стоит настоящая ссылка <a href="?page=2">, и параллельно — блок с номерами страниц внизу. Пользователь нажимает кнопку и получает подгрузку без перезагрузки, робот идёт по ссылкам как по обычной пагинации.
Бесконечная лента, реализованная только на JavaScript и без изменения URL, скрывает от поиска всё, кроме первой порции товаров. В категории на 2 000 позиций в индекс попадут 40 — остальные для поиска не существуют. Если лента нужна по продуктовым причинам, обязательно добавьте параллельный доступ по URL-адресам страниц.
SEO-настройка пагинации
Каноникал на себя. Страница ?page=3 канонизируется на ?page=3, а не на первую страницу категории. Канонизация всей пагинации на первую страницу — самая частая и самая разрушительная ошибка: поисковик перестаёт учитывать содержимое глубоких страниц, и товары оттуда выпадают из индекса. Подробнее о механике — в статье про каноникал.
Ссылки в HTML, а не только в скрипте. Если переход на следующую страницу выполняется обработчиком клика без атрибута href, для робота ссылки нет. Навигация по пагинации должна быть обычными ссылками, поверх которых уже навешивается JS-перехват.
Сортировки и фильтры. Комбинации параметров умножают количество URL:
40 страниц пагинации
× 8 вариантов сортировки
× N комбинаций фильтров
= сотни URL на одну категорию
Сортировочные параметры не несут уникального содержимого — это перестановка одного и того же набора товаров. Их закрывают от индексации (директивы в robots.txt, каноникал сортированной страницы на несортированную) и не выводят в карту сайта. Иначе краулинговый бюджет уходит на перестановки вместо новых карточек.
Уникальность метаданных. Title и description на страницах пагинации должны отличаться от первой страницы — обычно добавлением «— страница N». Полностью одинаковые метаданные на 40 страницах поисковик трактует как признак дублей.
Глубина. Категория, где 200 страниц пагинации, плохо обходится: до последних страниц робот доходит редко. Если ассортимент требует такой глубины, дробите категорию на подкатегории и посадочные страницы фильтров — они и обходятся лучше, и собирают спрос.
Пагинация и производительность
Число товаров на странице — компромисс. В типовых проектах берут 24–60 карточек: это укладывается в приемлемое время отклика и не требует слишком частых переходов. Полезные приёмы:
- Изображения карточек — через отложенную загрузку, кроме первого экрана.
- Фиксированные размеры карточек, чтобы подгрузка не сдвигала вёрстку.
- При подгрузке «Показать ещё» — ограничение на общее число накопленных карточек: после 5–7 подгрузок предлагать перейти на следующую страницу, иначе на слабых устройствах браузер начинает тормозить.
- Кнопка «наверх» появляется после второй подгрузки: в длинной ленте возврат к фильтрам без неё превращается в проблему.
Пагинация и персонализированная сортировка
Персонализация листинга меняет порядок товаров под конкретного пользователя. С пагинацией это даёт конфликт, о котором легко забыть.
Если персональный порядок пересчитывается при каждом запросе, то между загрузкой страницы 1 и страницы 2 ранжирование уже изменилось: товар с 18-й позиции мог подняться на 5-ю. Пользователь увидит его дважды, а какой-то другой товар — ни разу. Симптом на проде — жалобы вида «одни и те же товары на всех страницах».
Правильная схема:
Вход в категорию
→ рассчитать персональный порядок один раз
→ сохранить упорядоченный список ID в сессии (ключ: пользователь + категория + фильтры)
→ страницы пагинации нарезаются из ЭТОГО зафиксированного списка
→ пересчёт только при смене фильтров, сортировки или новой сессии
Дополнительные требования:
- Роботам отдаётся сортировка по умолчанию, а не персональная — иначе содержимое страницы
?page=2будет разным при каждом обходе. - Ключ кэширования персонального порядка включает набор фильтров: смена фильтра — это новый список, а не сдвиг старого.
- Время жизни зафиксированного порядка — сессия просмотра, обычно 20–30 минут.
Чек-лист
| Проверка | Норма |
|---|---|
| Каноникал страницы N | Указывает на саму себя |
| Ссылки пагинации | В HTML, с атрибутом href |
| Title и description | Различаются по страницам |
| Сортировки | Закрыты от индексации, вне карты сайта |
| Товаров на странице | 24–60, кратно ширине сетки |
| Возврат из карточки товара | Открывает ту же страницу и позицию списка |
| Персональный порядок | Стабилен в рамках сессии и набора фильтров |
| Индексация глубоких страниц | Выборочная проверка URL со страниц 5, 10, 20 в поиске |
| Страниц за сессию после смены паттерна | Замеряется до и после, вместе с конверсией листинга |
Последний пункт важен отдельно: переход с классических страниц на бесконечную ленту почти всегда поднимает просмотры и время на сайте, но это не то же самое, что рост заказов. Оценивать смену паттерна нужно по конверсии листинга и выручке, а не по глубине просмотра.