• Интернет-магазины · OpenCart 4.x

Магазин на 10 000+ товаров: каталог, карта сайта, скорость

Большой каталог ломается не там, где его заливают, а там, где его читают — покупатель и краулер. 31 июля 2026 года мы сняли показатели с живых магазинов: 54 302 товара и 635 категорий отдают первый ответ за 413,8 мс; 55 321 товарная страница на другом магазине - за 840,5 мс; 116 841 адрес – за 1 544,5 мс. Тот же движок, разные кэш, тема и количество модулей. Работа здесь не «сделать магазин», а держать три вещи одновременно: импорт, не кладущий сервер, карту сайта без дублей и страницу категории, которая собирается быстрее секунды. Ориентир по сроку – от 40 рабочих дней; объем зависит от того, сколько адресов у вас действительно, а это видно только после разбора выгрузки.

Стоимость
после бесплатного аудита
Гарантия
30 дней после подписания акта
Самый большой каталог, который мы мерили
54 302 товары и 635 категорий при TTFB 413,8 мс
после бесплатного аудита
Стоимость
30
Гарантия

дней после подписания акта

54 302
Самый большой каталог, который мы мерили

товары и 635 категорий при TTFB 413,8 мс

индекс из 32 файлов, 110 096 адресов на два языка
Карта сайта того же магазина
поиск OpenCart дал 54 501–54 600 позиций, расхождение 0,4%
Кросс-проверка каталога
дубли адресов: 33 493 записи на 8 690 уникальных
Что ломается чаще всего
40–70
Ориентир

рабочих дней; смета после разбора выгрузки

Этапы работы

Прозрачные этапы с согласованием на каждом шагу

Общий срок:40–70 дней

  1. Аудит каталога и измерение текущего состояния

    4–6 рабочих дней

    Считаем адреса в карте сайта, уникальные карты, дубли, снимаем TTFB и вес HTML. Это база, с которой потом сравниваем результат в акте приемки.

  2. ТС и схема импорта

    4–6 рабочих дней

    Мапинг полей прайса на поля OpenCart, правила категорий и атрибутов, расписание обновления. Здесь же решаем, что делать с позициями, которых нет налицо.

  3. Прототип каталога и фильтра

    4–7 рабочих дней

    Структура категорий, набор характеристик фильтра, поведение погинации. Согласны с дизайном: переделывать фильтр после верстки дорого.

  4. Дизайн и верстка

    8–14 рабочих дней

    Страница категории, карточка товара, ждут. Целевой вес страницы фиксируем в ТС: в выборке разброс HTML на том же движке — от 103,2 до 751,2 КБ.

  5. Сборник магазина и интеграции

    9–16 рабочих дней

    Оплата, доставка, аналитика, фиды. Параллельно – индексы MySQL и кэш под фактический объем каталога.

  6. Импорт каталога и чистка дублей

    7–14 рабочих дней

    Заливка батчами с журналом ошибок, сверка количества двумя методами, сборка sitemap-индекса подкартами, canonical на дублях.

  7. Погрузочная проверка, передача, запуск

    4–7 рабочих дней

    Повторные замеры TTFB и вес HTML, проход сценария импорта с вашим менеджером, передача доступов и инструкции.

Технологии и интеграции

На чём строим и с чем это соединяется

Стек

  • OpenCart 4.x – ставим по умолчанию
  • OpenCart 3.x – когда нужен модуль, которого под 4.x еще нет
  • PHP
  • MySQL
  • nginx
  • HTTP/2
  • Cloudflare
  • sitemap-индекс с подкартами по 3 000 URL
  • ocmod
  • модули NeoSeo
  • темы chameleon, revolution, UniShop

Интеграции

  • LiqPay
  • monobank «Покупка по частям»
  • безналичный расчет по НДС
  • рассрочка онлайн
  • Новая Почта
  • Meest Express
  • Rozetka Delivery
  • площадка Rozetka
  • интеграция с 1С (остатки и цены)
  • Google Tag Manager
  • GA4
  • Google Ads
  • Binotel
  • eSputnik
  • Google Sign-In
Что входит

Полный перечень работ и того, что вы получаете на выходе

  • Аудит текущего каталога: сколько реально карточек, сколько адресов в карте сайта, сколько из них дубли
  • Консольный импорт прайса батчами с журналом ошибок — без загрузки через админку
  • Мапинг полей CSV или XML на поля OpenCart: артикул, цена, остаток, категория, атрибуты
  • Расписание обновления цен и остатков: ежедневно или ежечасно, в зависимости от того, как быстро двигается состав
  • Фильтр по характеристикам с кэшированным подсчетом, чтобы счетчик у значения не перечислялся на каждый клик
  • Sitemap-индекс с подкартами по 3 000 адресов: отдельно товары, категории, информационные страницы
  • Чистка дублей: одна карточка — один канонический адрес, остальные закрыты canonical
  • Просмотр индексов MySQL и кэша категорий под фактический объем каталога
  • Замеры TTFB и весы HTML страницы категории до и после зафиксированы в акте приемки
  • Передача: доступы, инструкция по импорту, проход сценария обновления прайса с вашим менеджером
Когда эта услуга не подходит

Что не входит в работу — чтобы не было сюрпризов на сдаче

  • Наполнение карт контентом: описания, характеристики и фото готовите вы
  • Копирайтинг описаний на тысячи позиций
  • Продвижение и реклама после запуска
  • Хостинг, домен, оплата CDN
  • Исправление данных в прайсе поставщика: если в источнике каша, импорт перенесет кашу
Кому подходит

Ситуации, в которых эта услуга даёт результат

Сценарий 1 из 4

Прайс поставщика на 10–60 тысяч позиций

Файл приходит каждый день или каждый час, и его нужно залить так, чтобы сайт оставался живым. Из-за админки это не делается: она падает по таймауту. Требуется консольный импорт батчей с журналом ошибок, просмотренные индексы MySQL и кэш категорий под фактический объем.

Разберём вашу ситуацию на бесплатном аудите
Большой каталог: OpenCart против SaaS-конструктора и самописного решения

Чем этот вариант отличается от альтернативы

Лимит позицийограничен железом и кэшем, не платформой: 54 302 товара отдаются за 413,8 мс
Импорт прайсаконсольный, батчи, по расписанию, с журналом ошибок
Карта сайта на 50 тысяч адресовиндекс с подкартами по 3 000 адресов
Стоимость входаразовая работа, далее только хостинг
Кто делает, когда сломалосьлюбой PHP-разработчик: код открытый и документированный

  • Договор, акт и гарантия 30 дней

    На каждый проект письменный договор: объём, сроки, сумма, порядок приёмки. После сдачи — акт и счёт, затем 30 календарных дней гарантии.

  • ФОП и безналичный расчёт

    Исполнитель — зарегистрированный ФОП. Оплата на счёт с закрывающими документами.

  • Права и доступы — ваши

    Код, дизайн и материалы переходят к вам после полной оплаты. Домен, хостинг, репозиторий оформляем на вас.

  • Портал клиента вместо переписки

    Во время работы вы получаете доступ к порталу: договоры, счета, акты и статус проекта в одном месте.

  • Заказчики из Европы

    Среди работ — проекты для Норвегии, Болгарии, Молдовы и Испании.

  • Цифры, которые можно проверить

    Каждый кейс в портфолио — со ссылкой на живой сайт и техническим замером.

  • Сначала аудит, потом сумма

    Прайса на сайте нет намеренно: объём одной и той же работы у двух клиентов отличается кратно.

  • Говорим «нет», когда не уверены

    Если задача не наша или срок нереальный — скажем сразу.

Не нашли свой случай?

Опишите, как это устроено у вас, — ответим, подходит ли «Интернет-магазин с большим каталогом на OpenCart» и что это значит в вашей ситуации. Без брифа и без звонка: один вопрос, один ответ.

Что влияет на стоимость

Почему две одинаковые на вид задачи считаются по-разному

  • Фактический объем каталогаРазница между 10 и 50 тысячами позиций – это не множитель на цену, а другая схема импорта: батчи, отдельные индексы, кэш категорий. Поэтому первое, что мы делаем, считаем, сколько адресов у вас реально, двумя независимыми методами.
  • Состояние прайсаГотовый CSV с артикулом, ценой, остатком и атрибутами – это несколько дней маппинга. Прайс, где все характеристики лежат текстом в одном поле, приходится разбирать парсером, и это отдельная строка сметы.
  • Количество языковых версийВторой язык удваивает количество адресов и добавляет отдельную ветку в карту сайта. Модуль многоязычия — отдельная строка сметы и около пяти рабочих дней.
  • Глубина фильтраФильтр по 5 характеристикам и фильтр по 40 – это разные запросы к базе. На большом каталоге подсчет количества позиций в каждом значении приходится кэшировать отдельно, иначе каждый клик по фильтру собирает страницу заново.
  • Обмен с учетной системойОдносторонний импорт прайса вступает в работу. Двусторонний обмен с 1С или BAS – отдельная строка сметы и около десяти рабочих дней: это синхронизация остатков и статусов заказов, а не чтение файла.
  • Состояние текущего магазина при переносеПравки в ядре, самописные модули и накопившиеся дубли адресов увеличивают объем. Оценку даем после просмотра файлов и базы: за скриншотом админки такого не видно.
Кейсы

Задачи и результат в цифрах — все показатели сняты нашим замером

интернет-магазин тактического снаряжения, каталог более 50 000 позиций

Задача
Удержать сверхбольшой ассортимент с подробной фильтрацией по характеристикам и не потерять скорость отдачи страниц.
Решение
OpenCart 3 по Cloudflare, две языковые версии, карта сайта как индекс из 32 товарных файлов по 3500 адресов.
Результат
54 302 товара и 635 категорий, подтвержденных двумя методами: индекс карты сайта выдает 110 096 адресов на двух языках, перекрестная проверка с поиском OpenCart — 54 501–54 600 позиций, расхождение 0,4%. TTFB 413,8 мс, полная загрузка HTML 511,1 мс при размере 421,5 КБ. Девять типов JSON-LD. Измерено 31.07.2026.

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

Задача
Продавать технику и запчасти к ней с фильтрами по мощности и типу двигателя, вложенность категорий до четырех уровней.
Решение
OpenCart 3.x, nginx, HTTP/2. Восемь способов оплаты, четыре перевозчика. Карта сайта разбита на подкарты по 3000 адресов.
Результат
55 321 товарная страница (18 подкарт по 3 000 адресов плюс 1 321 в девятнадцатом) и 3 868 категорий - 59 189 адресов вместе. При таком объеме первый ответ сервера 840,5 мс, полная загрузка HTML 997,4 мс при 454,5 КБ. Это самый медленный TTFB среди измеренных магазинов с каталогом более 50 тысяч позиций. Измерение 31.07.2026.

оптовый магазин нижнего белья, каталог более 13 тыс. позиций

Задача
Дать подбор по размерам и цвету внутри модели и держать карту сайта чистой на таком объеме.
Решение
OpenCart, размерные сетки и фасовка, оптовые цены по уровням, восемь способов расчета.
Результат
13 590 адресов в карте сайта – 13 428 страниц товаров, 161 категория и главный – из которых только один дубликат, 0,007%. TTFB 289 мс при каталоге на 13 тысяч позиций. Найденный дефект: HTML главной 751,2 КБ, самый трудный документ выборки, и рабочая карта сайта лежит на нестандартном адресе. Измерение 31.07.2026.

интернет-магазин профессионального инструмента, каталог более 6 тыс. позиций

Задача
Продавать инструмент одновременно розничному мастеру и компании по НДС, каталог с фильтрами по типу инструмента.
Решение
OpenCart, две языковые версии, десять способов оплаты, четыре способа доставки.
Результат
25 537 записей в карте сайта на 6 857 уникальных адресов - 6 486 карточек товара и 361 категория. То есть каждый товар индексируется в среднем 3,9 раза под разными путями категорий, а сама карта собирается 34,2 секунды. TTFB 671,2 мс при 407,8 КБ HTML. Измерение 31.07.2026.
Что нужно от вас

Без этого не начнём — лучше подготовить заранее

  1. Выгрузка прайса в том виде, в каком оно приходит от поставщика, — именно оно определяет объем работ по импорту.
  2. Доступ к текущему сайту и базе данных, если магазин уже существует: без него количество дубликатов адресов не подсчитать.
  3. Список характеристик, по которым покупатель должен фильтровать, с приоритетом — фильтр за 40 полями и за 7 стоит по-разному.
  4. Доступ к хостингу: на таком каталоге важно видеть реальные ресурсы сервера до, а не после старта.
  5. Доступ к Search Console, если сайт уже индексируется, чтобы снять базовые цифры к работам.
  6. Одного человека с правом принимать решения по структуре каталога.

Если чего-то из этого нет — скажите, подскажем, как собрать или сделаем сами отдельной задачей.

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

Что спрашивают чаще всего — с конкретными ответами

Сколько товаров на самом деле выдержит OpenCart?

Мы мерили 54 302 товара при первом ответе 413,8 мс и 55 321 товарную страницу при 840,5 мс. Оба магазина живы и работают. Ограничение здесь не в количестве строк в базе, а в том, как собрана страница категории: сколько запросов она делает, кэширован ли подсчет в фильтре, сколько модулей висит на каждой загрузке.

На какой версии OpenCart вы собираете большой каталог?

По умолчанию 4.x. Сам объем каталога от версии ядра почти не зависит: его содержат индексы MySQL, кэш категорий и то, как разбита карта сайта. Наше наибольшее измерение – 54 302 товара при первом ответе сервера 413,8 мс – сделано на 3.x; магазинов такого объема на 4.x мы еще не мерили, поэтому цифры для четверки не обещаем. От версии зависит другое – модули: в 4.x переписали систему событий, и часть украинских сборок (консольный импорт прайсов, генераторы sitemap-индекса, выгрузка на площадки) пока выходит только под 3.x. Поэтому список модулей под ваш каталог сверяем на брифе: все критическое есть под 4.x – ставим 4.x; чего-то еще нет – обсуждаем 3.x на старте, чтобы не упереться в это на этапе интеграций.

Сколько это стоит и почему вилка так широка?

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

Почему 40-70 рабочих дней, а не быстрее?

Половина срока – это не дизайн. Аудит и измерение текущего состояния 4–6 дней, ТС и схема импорта 4–6, прототип каталога и фильтра 4–7, дизайн и верстка 8–14, сборка и интеграция 9–16, импорт и чистка дублей 7–14, погрузочная проверка и передача 4–7. Самые длинные этапы – сборка и импорт, и именно их не получается сжать: заливка батчами с проверкой занимает столько, сколько занимает.

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

Двумя независимыми методами и сравниваем результат. Первый – карта сайта: считаем записи в каждой подкарте. Второй – штатный поиск OpenCart с пустым запросом и лимитом 100 на страницу. На магазине снаряжения первый метод дал 54 302 товара, второй - 54 501-54 600: расхождение 0,4%, и это нормально. Если методы расходятся в разы – значит, в карте сайта дубли, и это уже отдельная строка работ.

Что не так с дублями адресов и почему это стоит денег?

Дубль — это когда та самая карта доступна по нескольким путям категорий, и все они попадают в карту сайта. Мы фиксировали 33 493 записи на 8 690 уникальных адресов в магазине садовой техники, 25 537 на 6 857 в магазине инструмента, 3 971 на 590 в магазине специй. Краулер тратит бюджет на просмотр одного и того же, а часть каталога остается вне индекса. Разбор таких адресов — отдельный этап, и он тем длиннее, чем больше истории накопилось.

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

Проблема. Стандартный генератор OpenCart собирает всю карту одним запросом, и на большом каталоге это 34,2 секунды – именно столько мы зафиксировали в магазине инструмента. Краулер столько не ждет. Решение – sitemap-индекс: отдельные подкарты по 3 000 адресов на товары, категории и информационные страницы. Так сделано в магазине снаряжения: 32 файла вместо одного.

А если каталог обновляется каждый час?

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

Вы гарантируете, что каталог зайдет в индекс?

Нет, и никто честный такого не пообещает. Скорость и полноту сканирования определяет Google. Наша зона — чтобы в карте сайта не было дублей, чтобы она отдавалась быстро и подкартами, чтобы страница категории собиралась быстрее секунды, а canonical стояли правильно. Это то, что мы можем измерить до и после и показать цифрами в акте.

Отправьте выгрузку прайса — посчитаем, сколько у вас адресов на самом деле.

В ответ — количество карточек двумя методами, оценка дублей в текущей карте сайта, схема импорта и смета по этапам с календарными датами.

Из измеренных кейсов13 590 адресов в карте сайта

Смотреть кейсы
  • Ответ в течение 2 часов
  • Без обязательств
  • Работаем по договору

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