G-FORCE
0.0G
разгон
← ко всем проектам
⚡ разбор кейса

E-commerce платформа с рекомендациями

Каталог, корзина, оплата и блок «вам может понравиться»

DjangoDjango ORMPostgreSQLCeleryRedisBootstrapJavaScript

01 Задача

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

02 Сложности

Каталог на несколько тысяч позиций с фильтрами по 6 параметрам открывался секундами: классический N+1 и отсутствие индексов. Рекомендации нельзя было считать в момент запроса — это блокировало ответ страницы.

03 Решение

Разобрал запросы через django-debug-toolbar и EXPLAIN: добавил select_related / prefetch_related, составные индексы под реальные фильтры, кэширование выдачи в Redis с инвалидацией по сигналу сохранения товара. Расчёт рекомендаций (совместные покупки + просмотры) вынес в Celery-задачу по расписанию, страница читает готовый результат.

04 Результат

Время ответа каталога сократилось с ~1.8 с до ~180 мс, количество SQL-запросов на странице — с 90+ до 6. Блок рекомендаций заметно поднял глубину просмотра в тестовых сценариях.

Чему меня научил этот проект

Это был мой главный урок по производительности: узкое место почти никогда не там, где кажется. Научился сначала измерять, потом оптимизировать — и полюбил фоновые задачи.


Обсуждение

Комментарии к проекту

Комментарии доступны зарегистрированным пользователям.

Комментариев пока нет — ваш будет первым.

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

Система управления задачами с аналитикой

SPA для команд: роли, канбан, графики продуктивности в реальном времени

Интерактивная доска для команды

Совместное рисование и заметки на Canvas через WebSocket

Сайт-портфолио с системой комментариев

Тот самый сайт, который вы сейчас читаете