Инструкции
Чеклист по оптимизации

Чеклист оптимизации фронтенда

Сводный чеклист по материалам раздела «Оптимизация фронтенда» и «Использование браузерных API». Используйте его на этапе разработки и при код-ревью продуктов на Q.Palette.

⚠️

Сквозное правило для всех разделов: каждая подписка (valueChanges, interval, fromEvent, SSE) должна завершаться через takeUntil(this.destroy$), а в компоненте должен быть реализован ngOnDestroy с destroy$.next() и destroy$.complete(). В пунктах ниже это явно не повторяется.


1. Перерисовка фильтров таблиц

Применяется ко всем *ngFor / @for по фильтрам, особенно в связке с p-columnFilter, p-dropdown, p-calendar.

См. также: Перерисовка всех фильтров при изменении одного.

0 / 8

2. Фильтры на базе q-lookup

Применяется ко всем формам и фильтрам с q-lookup или аналогичным компонентом с автозаполнением.

См. также: Избыточные запросы при изменении значений лукапа.

0 / 8
⚠️

distinctUntilChanged без предварительного map бесполезен: объекты сравниваются по ссылке, и каждое изменение считается новым.


3. Поллинг

Из-за вкладочной архитектуры Q.Palette неконтролируемый поллинг быстро превращается в десятки и сотни запросов в минуту.

См. также: Рекомендации по использованию поллинга и SSE-клиент.

0 / 9
🚫

10 открытых вкладок с поллингом каждые 5 секунд = 120 запросов в минуту только от одного пользователя. Всегда оценивайте суммарную нагрузку.


4. Браузерные API

Применяется к коду, напрямую работающему с DOM, событиями, наблюдателями и таймерами.

См. также: Осторожное использование браузерных API.

0 / 11

Layout Thrashing

Слушатели событий

Наблюдатели

Работа с DOM и таймерами


5. CSS и анимации

Чем дешевле эффект для браузера, тем плавнее работает интерфейс. Цель — оставлять браузеру только этап Composite, минуя Layout и Paint.

0 / 11

Что анимировать

Дорогие CSS-свойства

Изоляция и подсказки браузеру

Длинные и фоновые анимации


6. Диагностика перед мерджем

0 / 5

Связанные материалы