Производительность
Bundle budgets: тест с множественным выбором
Шесть вопросов сквозь весь юнит. Каждый отражает решение, которое ты принимаешь на реальном perf-ревью — не определение для пересказа, а вопрос о том, какой рычаг реально двигает число под нагрузкой.
Подтверди, что умеешь связывать четырёхфазную модель стоимости, пороги Core Web Vitals, иерархию splitting/tree-shaking/compression, налог third-party и enforcement в CI — тот синтез, к которому вели отдельные уроки.
Команда A переходит с gzip на brotli и режет transfer с 180 KB до 150 KB. Команда B применяет code-splitting к тому же роуту с 600 KB до 200 KB несжатого. Обе отчитываются о выигрыше в LCP. Кто реально снизил стоимость CPU и почему?
Страница грузится за 800 мс на M-ноутбуке разработчика, но висит пустой ~8 с на mid-range Android. TTFB 70 мс на обоих. Что доминирующая причина?
У команды P75 LCP — Poor, а P75 CLS — Good. Они режут bundle роута с 700 KB до 200 KB. LCP и INP улучшаются; CLS почти не двигается. Почему это ожидаемый исход?
Разработчик пишет `import { debounce } from 'lodash'`, и анализатор показывает 70 KB, а не 2 KB. На своём пакете он уже выставил `sideEffects: false`. В чём реальная причина и фикс?
Команда спринт режет первопартийный bundle с 800 KB до 350 KB; через месяц data-команда добавляет через GTM Segment, Hotjar и Intercom (~450 KB), и выигрыш стёрт. Какой контроль поймал бы это до релиза?
Lighthouse CI на каждом PR показывает P75 LCP 2.1 с; production RUM показывает 4.8 с P75 на мобильных для того же роута. Как это читает сеньор?
Сквозная линия юнита — одно дерево решений: байты равны четырём фазам CPU (download — это сеть, parse/compile/execute — CPU юзера), поэтому реальные рычаги сокращают поставляемые байты — сначала splitting, затем tree-shaking, с compression как финишёром только для транспорта. Core Web Vitals количественно меряют стоимость (LCP/INP двигаются с JS, CLS — нет). Third-party скрипты — тихий убийца бюджета, которого первопартийные gate не видят, потому им нужен свой budget плюс CSP. И ничто не держится без enforcement: size-limit в CI, RUM в production, храповик budget-raise против дрейфа.