Пересказать с ИИ:

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

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

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

В чём заключалась проблема

Схема работы до оптимизации: Покупатель -> Открытие карты ПВЗ -> Запрос к Dalli -> Получение 4700 точек -> Обработка на сервере -> Загрузка карты

При каждом выборе доставки система заново запрашивала у Dalli полный список точек и обрабатывала все 4700 пунктов выдачи синхронно, в рамках одного запроса чекаута. На момент обращения только для Москвы API возвращал около 4700 ПВЗ.

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

В результате карта открывалась заметно медленнее; оформление заказа занимало больше времени; возрастало потребление памяти; в отдельных случаях происходило превышение memory_limit, и карта могла не отображаться. Проблема была связана не с работой Dalli, а с тем, что прежняя логика интеграции перестала соответствовать новому объёму данных.

Почему подобные ситуации возникают

Почему нагрузка увеличилась: Расширение сети ПВЗ -> Больше данных -> Больше запросов -> Выше нагрузка -> Замедление оформления заказа

При запуске интернет-магазина невозможно заранее учесть все изменения, которые произойдут через месяцы или годы. Растут каталоги, появляются новые регионы доставки, расширяются возможности внешних сервисов.

Поэтому регулярная поддержка интернет сайтов позволяет своевременно адаптировать решения к новым условиям, не дожидаясь ошибок или снижения производительности.

Как мы решили проблему

Вместо временных решений мы изменили сам подход к интеграции.

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

  1. Серверное кэширование списка ПВЗ
  2. Постепенная загрузка карты: сразу выводить несколько тысяч маркеров тяжело для браузера. Теперь карта сначала показывает компактную часть точек и открывается практически мгновенно, а остальные подгружаются в фоне порциями.
  3. Защита от повторной обработки данных: добавили проверку - при повторном открытии карты уже загруженные точки не обрабатываются заново. Карта остаётся лёгкой при любом количестве открытий.

Какой результат получил клиент

Работа после оптимизации: Первый запрос -> Получение списка ПВЗ -> Кэширование -> Быстрое открытие карты -> Фоновая загрузка остальных точек

После оптимизации удалось решить несколько задач:

  • значительно снизилась нагрузка на сервер за счёт сокращения обращений к API и отказа от синхронной обработки тысяч точек;
  • полностью исчезла проблема с превышением memory_limit;
  • карта открывается практически мгновенно даже при нескольких тысячах адресов;
  • сценарий оформления заказа для покупателя не изменился.

Что важно учитывать при работе с интеграциями

Внешние сервисы регулярно расширяют функциональность и увеличивают объём данных. Если магазин развивается, интеграции тоже требуют регулярного анализа и оптимизации.

Именно поэтому разработка и сопровождение сайтов не заканчиваются после публикации проекта. Своевременная адаптация позволяет сохранять стабильную работу для покупателей.

Итоги

Обновление Dalli стало примером того, как рост данных во внешнем сервисе может повлиять на производительность интернет-магазина. Благодаря пересмотру логики интеграции, серверному кэшированию с привязкой к городу (а не к сессии), постепенной загрузке карты и защите от повторной обработки удалось снизить нагрузку на сервер, ускорить оформление заказа и обеспечить стабильную работу даже при обработке тысяч пунктов выдачи.

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