Дмитрий Гапонов › Nautisss
Сайты руками, боты и парсеры на Python, чертежи в AutoCAD
Рейтинг
5 442
№ 268 в каталоге
Отзывы
Профессионализм
10/10
Коммуникация
10 /10
На сайте с
2025 года
Юридический статус
Самозанятый

Магазин электроники на 800 тысяч товаров - товарные фиды, фильтр по характеристикам, ускорение

Описание

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

Началось с рекламы, которая не получала товаров. Товарные фиды не обновлялись с начала лета, отдавали миллион предложений без цен и картинок, а карта сайта вела на старые адреса, каждый из которых отвечал переадресацией. Дальше встал фильтр по характеристикам - в теме он был, но не работал. Потом пошли оформление заказа и скорость сайта. Доступ дали полный, вместе с файлами, базой и панелью сервера. Отдельным фоном шли жалобы вида «сайт висит» и «не открывается с телефона», их приходилось разбирать между делом.

Решение

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

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

Индексацию закрыл отдельно. Комбинация галочек уходит из поиска с каноническим адресом на чистую категорию, одиночный фильтр остаётся со своим заголовком и описанием, пустая выдача в индекс не пускается вовсе - иначе подстановкой любого значения в адрес робот наплодит сколько угодно пустых страниц.

На телефоне список значений получил свою прокрутку, а кнопка применения прибита к низу экрана. Иначе до неё пришлось бы пролистать сто восемьдесят шесть значений ёмкости.

Результат

Фиды стали отдавать четыреста тридцать одну тысячу предложений только по товарам в наличии вместо миллиона мусорных, карта сайта восемьсот одну тысячу адресов нынешнего вида, обновление идёт само каждую ночь. Полный пересбор фасетов девятнадцать секунд, чтение одной категории полмиллисекунды. Страница категории с двумя отмеченными галочками считается 0,47 секунды вместо 0,82, пересчёт числа товаров при выборе на тёплом кеше 0,13 секунды. Заказчик после этого приносил следующие работы по тому же магазину.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Цены таблицей и галерея в карточку товара - правка через Excel вместо сотни карточек
Цены таблицей и галерея в карточку товара - правка через Excel вместо сотни карточек
6
Веб-разработка и IT Интернет-магазин аквариумистики «Тихий Риф»: шесть страниц, каталог, карточка товара и доставка живого товара
Интернет-магазин аквариумистики «Тихий Риф»: шесть страниц, каталог, карточка товара и доставка живого товара
8
Веб-разработка и IT Защита формы заявок от бота без капчи - одноразовый токен, приманка и отсечка по времени
Защита формы заявок от бота без капчи - одноразовый токен, приманка и отсечка по времени
7
Инженерия и Проектирование Ворота трансформаторной подстанции: чертёж КМ с фасадом, разрезами и спецификацией металла
Ворота трансформаторной подстанции: чертёж КМ с фасадом, разрезами и спецификацией металла
7