Описание проблемы
При инициализации виджета происходит единовременная загрузка всех пунктов выдачи (~8000+),
что приводит к критически долгому времени загрузки (16–40 секунд), чрезмерному потреблению
оперативной памяти и зависанию страницы.
Проблема актуальна и воспроизводится даже на официальном демо-сайте виджета.
Шаги для воспроизведения
- Подключить виджет стандартным способом согласно документации
- Открыть страницу с виджетом
- Открыть DevTools → Network / Performance
- Наблюдать загрузку и потребление ресурсов
Фактическое поведение
- Виджет единовременно запрашивает и отрисовывает все ПВЗ (~8000+ точек)
- Страница зависает из-за высокого потребления RAM при отрисовке точек на карте
- При переинициализации виджета старые обработчики событий не очищаются — утечка памяти
Замеры от пользователя @FAUSTddd:
Даже демо сайт еле грузит.
132 запроса
25,59 МБ / 5,40 МБ передано
Передано за: 16,91 с
DOMContentLoaded: 896 мс
load: 3,69 с
С каждым днем количество ПВЗ увеличивается.
Ожидаемое поведение
Загрузка ПВЗ должна происходить лениво (lazy) — только для видимой области карты
(viewport-based loading), аналогично тому, как работают Яндекс.Карты, Google Maps и другие
картографические сервисы. Количество ПВЗ продолжает расти, что усугубляет проблему с каждым днём.
Окружение
- Версия виджета:
@cdek-it/widget@3.x (последняя)
- Воспроизводится в любом современном браузере
- Воспроизводится на официальном демо-сайте виджета
Предложение / Workaround от сообщества
Участники обсуждения реализовали собственные решения:
Дополнительный контекст
Скриншоты
Данный issue был переоткрыт из дискуссии, так как является актуальной проблемой виджета.
Описание проблемы
При инициализации виджета происходит единовременная загрузка всех пунктов выдачи (~8000+),
что приводит к критически долгому времени загрузки (16–40 секунд), чрезмерному потреблению
оперативной памяти и зависанию страницы.
Проблема актуальна и воспроизводится даже на официальном демо-сайте виджета.
Шаги для воспроизведения
Фактическое поведение
Замеры от пользователя @FAUSTddd:
Ожидаемое поведение
Загрузка ПВЗ должна происходить лениво (lazy) — только для видимой области карты
(viewport-based loading), аналогично тому, как работают Яндекс.Карты, Google Maps и другие
картографические сервисы. Количество ПВЗ продолжает расти, что усугубляет проблему с каждым днём.
Окружение
@cdek-it/widget@3.x(последняя)Предложение / Workaround от сообщества
Участники обсуждения реализовали собственные решения:
Дополнительный контекст
Скриншоты