ФиксИнтернет-магазин на 1С-Битрикс под ключ за 30 дней по фиксированной цене

Бесконечная прокрутка vs производительность: как не убить скорость

Бесконечная прокрутка каталога на 1С-Битрикс без потери скорости: AJAX, композит, кэш, виртуализация

Бесконечная прокрутка выглядит красиво и современно: пользователь листает каталог, а товары появляются сами, без кликов по страницам. Но за этой лёгкостью прячется коварная механика: чем дальше проматывает посетитель, тем тяжелее становится страница. Сотни карточек в DOM, десятки запросов к серверу, лагающий скролл на смартфоне — и вот уже «удобный» каталог тормозит и роняет конверсию вместе с позициями в поиске.

Значит ли это, что бесконечную прокрутку нельзя использовать? Нет — её можно сделать быстрой, если понимать, где она бьёт по производительности, и заранее закладывать решения. В этой статье разберём, как реализовать подгрузку каталога на 1С-Битрикс без потери скорости: виртуализация, композитный сайт, кэш, ленивая загрузка и связь с SEO. Комплексно эту работу удобно вести в рамках аудита и оптимизации.

Коротко

  • Бесконечная прокрутка удобна для просмотра, но по мере подгрузки раздувает DOM и тормозит на слабых устройствах.
  • Без сохранённой пагинации с URL робот может не увидеть весь каталог — SEO страдает.
  • Скорость держат виртуализация списка, композитный сайт, кэш умного фильтра и ленивая загрузка изображений.
  • Часто оптимален гибрид: кнопка «показать ещё» плюс сохранённые адреса страниц для обхода.

Соблазн бесконечной прокрутки

Бесконечная прокрутка пришла из соцсетей, где лента без конца удерживает внимание. В интернет-магазине её ценят за плавность: пользователь погружается в просмотр, не отвлекаясь на клики по номерам страниц. На мобильных, где кликать по мелкой пагинации неудобно, это ощущается особенно естественно.

Но каталог магазина — не лента соцсети. У посетителя обычно есть цель: найти конкретный товар, сравнить, вернуться к понравившемуся. И здесь бесконечная прокрутка начинает работать против пользователя: невозможно оценить объём, тяжело вернуться к найденному, а страница по мере прокрутки становится всё медленнее. Поэтому решение о бесконечной прокрутке — это всегда компромисс, который нужно принимать осознанно, а не «потому что модно».

Три способа показать длинный каталог

Есть три основных паттерна вывода товаров, и у каждого своя ниша:

ПаттернПлюсыМинусы
Классическая пагинацияОтличное SEO, возврат к странице, лёгкий DOMКлики, менее «плавно»
Кнопка «показать ещё»Контроль пользователя, гибрид скорости и удобстваНужен ручной клик
Бесконечная прокруткаПлавный просмотр, удобно на мобильныхТяжёлый DOM, риски SEO, возврат к товару

На практике лучший результат даёт не «чистый» паттерн, а их сочетание: визуальная подгрузка для удобства и сохранённые адреса страниц для робота и возврата. Выбор зависит от аудитории: для просмотрового каталога уместнее подгрузка, для каталога с поиском конкретных позиций — пагинация.

Слои кэширования ускоряют ответ БраузерзапросCDN / кэшготовый ответКомпозиткэш страницБазатолько при промахеБольшинство запросов отдаётся из кэша, до базы доходят единицы
Схема: между браузером и базой стоят слои кэша (CDN, композит). Большинство запросов отдаётся мгновенно из кэша, а до базы доходят единицы — сайт держит нагрузку.

Чем бесконечная прокрутка бьёт по скорости

Главная проблема бесконечной прокрутки — накопление. Каждая подгруженная порция добавляет в страницу новые элементы, и они никуда не деваются:

Итог — деградация: сначала всё быстро, а после долгой прокрутки скролл начинает дёргаться, особенно на недорогих смартфонах. Именно поэтому нельзя реализовывать бесконечную прокрутку наивно, просто дописывая карточки в конец списка. Нужна дисциплина: виртуализация, кэш, ленивая загрузка. Дисциплину внедрения таких изменений мы описываем в статье про CI/CD и деплой на 1С-Битрикс.

Влияние на SEO и индексацию

Вторая большая проблема — поисковая. Если товары появляются только по скроллу через JavaScript и у них нет доступных ссылок на страницы, поисковый робот рискует не увидеть весь ассортимент. Робот не «прокручивает» страницу как человек — он идёт по ссылкам. Нет ссылок на следующие страницы в HTML — нет обхода дальних товаров.

Решение — держать полноценную пагинацию с URL (?PAGEN_1=2) и ссылками в разметке параллельно с визуальной подгрузкой. Пользователь листает бесконечно, а робот обходит каталог по обычным страницам. Эта связка напрямую пересекается с настройкой индексации каталога — как её выстроить, разбираем отдельно, но принцип один: удобство пользователя не должно закрывать товары от поисковика. Данные о товарах для такой выдачи лучше получать эффективно, о чём мы пишем в материале про D7 и ORM в 1С-Битрикс.

Виртуализация списка

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

Благодаря этому DOM не разрастается бесконечно: сколько бы товаров ни подгрузилось, в дереве всегда примерно одинаковое число узлов, и скролл остаётся плавным. Плата за это — усложнение реализации: нужно аккуратно считать высоту элементов, обрабатывать возврат к удалённым карточкам и не допускать «прыжков» контента. Виртуализация оправдана на действительно длинных списках; для коротких каталогов она избыточна.

Композитный сайт и первый экран

Скорость первого экрана — самое важное для восприятия и для метрики LCP. Здесь на 1С-Битрикс работает композитный сайт: статическая часть страницы каталога отдаётся из готового кэша практически мгновенно, ещё до выполнения тяжёлой серверной логики. Пользователь видит товары сразу, а динамические блоки (цена, наличие, состояние корзины) догружаются отдельно.

Бесконечная прокрутка отлично сочетается с композитом: первый экран — из статического кэша, последующие порции — через AJAX. Главное, чтобы AJAX-подгрузка не сводила на нет выигрыш композита тяжёлыми запросами. Композит закрывает старт, а за плавность дальнейшей прокрутки отвечают виртуализация и кэш. Про инфраструктуру, на которой композит работает стабильно под нагрузкой, мы пишем в статье про хостинг и BitrixVM.

Кэш и фасетный индекс при подгрузке

Каждая порция товаров при прокрутке — это запрос к серверу. Если каждый такой запрос заново дёргает базу и пересчитывает выборку, каталог под нагрузкой ляжет. Спасают несколько механизмов 1С-Битрикс:

Правило подгрузки: AJAX-запрос за следующей порцией товаров должен идти по тому же кэшированному пути, что и первый экран. Если подгрузка «в обход» кэша заново считает фильтр и выборку, вы теряете весь смысл композита и рискуете уронить сервер на пиковом трафике.

Ленивая загрузка изображений

Каталог — это прежде всего изображения товаров, и они же — главный вес страницы. При бесконечной прокрутке грузить все картинки сразу губительно: сотни изображений подгруженных карточек съедят трафик и память. Ленивая загрузка (lazy loading) подгружает изображение только когда оно приближается к области видимости.

Это критично именно для бесконечной прокрутки: пользователь может так и не долистать до дальних карточек, и грузить их картинки заранее — пустая трата ресурсов. В связке с современными форматами изображений (WebP, AVIF) и адаптивными размерами ленивая загрузка становится одним из главных рычагов скорости каталога. Браузеры поддерживают её штатным атрибутом, но при виртуализации логику приходится согласовывать с добавлением и удалением карточек.

Возврат к товару и позиция скролла

Самая раздражающая беда бесконечной прокрутки — потеря места. Пользователь долго листал, открыл товар, нажал «назад» — и оказался в начале списка, потеряв всё, что пролистал. Это прямая потеря конверсии: вернуться к найденному становится мучением, и человек уходит.

Решается сохранением состояния: позиция скролла и набор подгруженных страниц запоминаются (через историю браузера или параметры URL), и при возврате каталог восстанавливает нужное место. Это обязательный элемент, без которого бесконечную прокрутку внедрять не стоит. Если реализовать её без сохранения позиции, «удобный» просмотр обернётся оттоком именно на самом ценном сценарии — когда пользователь уже нашёл интересный товар.

Гибридный подход: кнопка «показать ещё»

Часто оптимальное решение — не чистая бесконечная прокрутка, а гибрид с кнопкой «показать ещё». Пользователь листает, видит порцию товаров и сам решает, подгружать ли дальше, нажав кнопку. Это даёт несколько преимуществ:

  1. Контроль пользователя. Человек управляет подгрузкой, а не «проваливается» в бесконечность.
  2. Доступ к футеру. При чистой бесконечной прокрутке футер недостижим — при кнопке он доступен.
  3. Мягче для DOM. Подгрузка происходит по клику, а не непрерывно, проще контролировать вес страницы.
  4. Совместимо с SEO. Кнопка легко сочетается с сохранёнными адресами страниц для робота.

Кнопка «показать ещё» — золотая середина между удобством подгрузки и контролем над скоростью и индексацией. Именно её мы чаще всего рекомендуем для каталогов на 1С-Битрикс.

Реализация на 1С-Битрикс

Собрать быструю подгрузку каталога можно по такой последовательности:

  1. Выберите паттерн под аудиторию. Просмотровый каталог — подгрузка/кнопка; каталог с поиском позиций — пагинация.
  2. Сохраните пагинацию с URL. Полноценные адреса страниц и ссылки в HTML для обхода роботом.
  3. Включите композит. Первый экран каталога — из статического кэша композитного сайта.
  4. Настройте кэш подгрузки. AJAX за следующей порцией идёт через кэш и фасетный индекс, а не в обход.
  5. Добавьте ленивую загрузку. Изображения грузятся по мере приближения к экрану, в современных форматах.
  6. Сохраните позицию. При возврате из карточки каталог восстанавливает место прокрутки.
  7. Профилируйте на слабых устройствах. Проверьте память, частоту кадров и Core Web Vitals на недорогих смартфонах.

Частые ошибки

Чек-лист внедрения

  1. Паттерн выбран осознанно. Под аудиторию и сценарий, а не «потому что модно».
  2. SEO защищено. Сохранены адреса страниц и ссылки в HTML для обхода.
  3. DOM под контролем. На длинных списках работает виртуализация или кнопка «показать ещё».
  4. Композит и кэш. Первый экран из кэша, подгрузка через фасетный индекс и кэш.
  5. Ленивая загрузка. Изображения грузятся по мере необходимости, в современных форматах.
  6. Позиция сохраняется. Возврат из карточки восстанавливает место прокрутки.
  7. Проверено на мобильных. Core Web Vitals и плавность скролла на недорогих смартфонах в норме.

Вывод

Бесконечная прокрутка — не зло и не панацея, а инструмент со своими издержками. Её главная опасность в том, что она незаметно деградирует: сначала всё быстро, а после долгой прокрутки DOM раздувается, скролл лагает, а часть товаров рискует выпасть из индекса. Реализованная наивно, она убивает и скорость, и SEO.

Чтобы этого не случилось, закладывайте решения заранее: сохраняйте пагинацию с URL для робота, используйте композит и кэш для скорости, виртуализацию и ленивую загрузку против раздувания, а позицию скролла — ради возврата к товару. А во многих случаях лучший ответ — гибрид с кнопкой «показать ещё», который даёт удобство подгрузки без потери контроля над скоростью и индексацией.

Частые вопросы

Что лучше для каталога: бесконечная прокрутка или классическая пагинация?

Однозначного ответа нет — выбор зависит от задачи. Бесконечная прокрутка удобна для просмотрового сценария и мобильных устройств, но хуже для SEO и для поиска конкретной позиции. Классическая пагинация лучше индексируется и позволяет вернуться к нужной странице. На практике часто используют гибрид: кнопку «показать ещё» с подгрузкой плюс сохранение адресов страниц для робота. Главное — не жертвовать скоростью и индексацией ради модного паттерна.

Почему бесконечная прокрутка замедляет сайт?

По мере прокрутки в DOM накапливается всё больше карточек товаров, изображений и обработчиков событий. На сотнях подгруженных позиций браузер начинает тормозить: растёт потребление памяти, замедляется отрисовка, лагает скролл, особенно на слабых смартфонах. Плюс каждая подгрузка — это запрос к серверу, и без кэширования они нагружают базу. Поэтому бесконечную прокрутку нужно реализовывать аккуратно, с виртуализацией и кэшем, а не просто «дописывать» карточки в конец списка.

Как бесконечная прокрутка влияет на SEO?

Плохо реализованная — негативно. Если товары подгружаются только по скроллу через JavaScript и не имеют доступных ссылок на страницы, поисковый робот может не увидеть весь ассортимент. Решение — сохранять полноценную пагинацию с URL (?PAGEN_1=2) и ссылками в HTML параллельно с визуальной подгрузкой. Тогда пользователь листает бесконечно, а робот обходит каталог по обычным страницам. Без этого часть товаров рискует не попасть в индекс.

Что такое виртуализация списка и зачем она нужна?

Виртуализация (виртуальный скролл) — это техника, при которой в DOM держатся только видимые на экране карточки, а ушедшие вверх удаляются или заменяются заглушкой. Это не даёт DOM бесконечно разрастаться и держит скролл плавным даже после сотен подгруженных товаров. Виртуализация — ключевой приём, чтобы бесконечная прокрутка не убивала производительность на длинных списках, хотя она усложняет реализацию и требует аккуратной работы с высотой элементов.

Совместима ли бесконечная прокрутка с композитным сайтом Битрикс?

Да, и композит здесь очень помогает. Первый экран каталога отдаётся из статического кэша композитного сайта мгновенно, а последующие порции товаров догружаются через AJAX по мере прокрутки. Важно, чтобы AJAX-подгрузка использовала кэшированные данные и фасетный индекс умного фильтра, а не тяжёлые запросы к базе на каждый скролл. Тогда и первый экран быстрый, и подгрузка не создаёт нагрузку.

Как сделать так, чтобы пользователь мог вернуться к товару после прокрутки?

Это известная боль бесконечной прокрутки: пользователь пролистал далеко, открыл товар, вернулся — и оказался в начале списка. Решается сохранением позиции скролла и состояния подгруженных страниц (через историю браузера или параметры URL). При возврате каталог восстанавливает нужную позицию. Без этого бесконечная прокрутка раздражает и роняет конверсию, потому что вернуться к найденному товару становится мучением.

Нужна ли ленивая загрузка изображений при бесконечной прокрутке?

Обязательно. Каталог — это в основном изображения товаров, и грузить их все сразу бессмысленно и вредно. Ленивая загрузка (lazy loading) подгружает картинку только когда она приближается к области видимости. При бесконечной прокрутке это критично: без ленивой загрузки сотни изображений подгруженных карточек убьют и трафик, и производительность. В связке с современными форматами изображений это один из главных рычагов скорости каталога.

Как измерить, что бесконечная прокрутка не вредит скорости?

Через Core Web Vitals и профилирование. Следите за LCP (скорость показа первого экрана), CLS (сдвиги макета при подгрузке — их быть не должно) и за отзывчивостью интерфейса при долгой прокрутке. Профилируйте потребление памяти и частоту кадров скролла на реальных недорогих смартфонах, а не только на мощном компьютере. Если после сотни подгруженных товаров скролл начинает лагать — нужна виртуализация или переход на кнопку «показать ещё».

Поделиться:

Каталог тормозит при прокрутке?

Наладим подгрузку без раздувания DOM, включим композит, кэш и ленивую загрузку, сохраним SEO. Рассчитаем работу по вашему каталогу.

Аудит и оптимизация 1С

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины на 1С-Битрикс: ускоряем каталоги, настраиваем подгрузку, композит и кэш без ущерба для скорости и SEO.

← Все статьи блога