Что такое пагинация и почему это не мелочь

Пагинация — разбиение длинного списка на порции. В категории на 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 в поиске
Страниц за сессию после смены паттерна Замеряется до и после, вместе с конверсией листинга

Последний пункт важен отдельно: переход с классических страниц на бесконечную ленту почти всегда поднимает просмотры и время на сайте, но это не то же самое, что рост заказов. Оценивать смену паттерна нужно по конверсии листинга и выручке, а не по глубине просмотра.