3TP Cachly
Продукт Блог
Главная / Блог / Кейс «Маркетлайн»

Как «Маркетлайн» снизил время отдачи карточек на 38% за две недели

Маркетплейс на 9 миллионов SKU переехал с зарубежного CDN, и не только из‑за санкций. Команда 3TP Cachly помогала с миграцией — рассказываем, что было до, что сделали и какие графики показывают разницу.

TTFB · карточки товара · 30 дней

Контекст: 9 миллионов карточек, пик в Чёрную пятницу

«Маркетлайн» — большой маркетплейс электроники и быта. Основной формат страницы — карточка товара со сложной шапкой, отзывами, рекомендациями и галереей. До миграции среднее время отдачи такой карточки составляло 820 мс по 50‑му перцентилю и 2100 мс по 95‑му. На пике BFCM прошлого года 95‑й перцентиль уходил за 4.5 секунды, и команда наблюдала прямую корреляцию с падением конверсии в добавление в корзину.

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

Что мы сделали

1. Перевели статику и картинки на edge

Перевод занял один день. Сменили CNAME у поддомена static.marketline.ru и подняли отдельный поддомен img.marketline.ru для динамической оптимизации картинок. На img‑поддомене включили AVIF/WebP «на лету» с ресайзом по URL‑параметру:

https://img.marketline.ru/p/8421-toaster.jpg?w=480&q=78&fmt=avif

В шаблонах товарной карточки и листинга это выглядит как один атрибут srcset. Никаких npm‑пакетов, никакого пересжатия исходников.

«Мы не верили, что переключение займёт меньше дня. Внутри маркетплейса вызвали скепсис: предыдущий CDN мы переезжали 6 недель. Здесь — буквально один CNAME и плагин для админки.»

2. Кэш карточек на 5 минут с tag‑инвалидацией

Самое сложное было с самими карточками: html генерируется бэкендом, и в нём есть динамические блоки (наличие, цена с учётом промокода пользователя, рекомендации). Мы разделили рендер на две части: скелет карточки (заголовок, описание, основная галерея, спецификации) — кэшируется на 5 минут с тегами вида product:{id}, category:{cat_id}; и персональные блоки — подгружаются на клиенте через отдельные fetch‑запросы с короткими TTL.

Инвалидация настроена так: при изменении цены или наличия товара бэкенд дёргает POST /v1/cache/purge с тегом конкретного продукта. Среднее время от изменения в БД до пропадания старого html на всех 32 узлах — 410 мс.

3. Бот‑защита и rate‑limit

До перехода на 3TP Cachly у «Маркетлайна» был отдельный подрядчик по WAF и анти‑парсингу. После анализа логов мы увидели, что 14% трафика — это парсеры конкурентов и SEO‑краулеры, которые забирают ровно карточки товаров. На едином сервисе бот‑защиту включили правилом:

{
  "name": "anti-scraping",
  "match": { "path": "/product/*" },
  "rate_limit": { "rpm": 60, "by": "ip" },
  "challenge": { "score_below": 30, "action": "js" }
}

Это снизило исходящий трафик с edge на 18%. Не потому что меньше пользователей — а потому что меньше парсеров.

Результаты на 14‑й день

Что не получилось сразу

Первая попытка кэшировать листинг категорий с фасетным фильтром привела к взрывному росту количества уникальных URL: каждое сочетание фильтров — новый ключ. За сутки набралось 1.8 млн вариантов, и реальный hit‑ratio был всего 22%. Решили нормализовать URL: фильтры по ценам округляем до диапазонов, малозначимые фильтры исключаем из ключа кэша. После этого hit‑ratio стал 68%.

Со стримингом видео на карточках товаров временно отложили — он у нас идёт через отдельную инфраструктуру. На горизонте 6 месяцев тоже планируем перевести.

Команда и сроки

Над миграцией с нашей стороны работали два инженера по производительности и платформенный архитектор. От 3TP Cachly — один solutions‑инженер, который сидел с нами в общем Telegram‑канале. Общая длительность от первого письма до полного перевода прод‑трафика — 11 рабочих дней, включая выходные на котрольных запусках.

Чёрная пятница в этом году у нас впервые прошла без алертов от мониторинга и без созыва команды реагирования. Уже только за это переход себя окупил.

МС
Михаил Сергеев
Head of Platform · Маркетлайн