Браузер и фронтенд-рантайм
Render pipeline: тест с выбором ответа
Шесть вопросов поперёк всего pipeline. Каждый отражает решение, которое ты принимаешь в реальном расследовании джанка — не стадию для называния, а стоимость для прогноза и фикс для ранжирования.
Убедись, что связываешь шесть стадий, правила инвалидации, compositor layers, layout thrashing и production-метрики — тот синтез, к которому вели отдельные уроки.
Обработчик скролла анимирует элемент списка, записывая element.style.top каждый кадр, и страница дёргается на среднем телефоне. Коллега говорит: это на компоненте композитинга, значит дело в GPU. Почему он неправ?
Страница рендерит ленту из 10 000 строк. style + layout на первой отрисовке стоят 1 200 мс. Нужна быстрая первая отрисовка без виртуализации (без переписывания DOM). Какое одно изменение даёт максимальный рычаг?
Ты добавляешь will-change: transform на одну карточку в ленте ради плавного hover. DevTools Layer Borders теперь показывает сорок promoted-боксов. Почему и какова стоимость?
Main thread заблокирован на 400 мс синхронным JSON.parse. CSS-анимация на transform продолжает идти 60 fps; командная rAF-анимация на том же элементе застывает. Каков механизм?
Production RUM сообщает p75 INP 340 мс, тогда как Lighthouse в офисе ставит 95. Обработчик клика читает getBoundingClientRect(), а затем пишет стили в цикле. Как это читать и куда смотреть первым делом?
Слушатель touchmove добавлен без { passive: true } на контейнере скролла, и fps скролла обваливается на мобильном. Что изменилось в pipeline?
Сквозная линия юнита — одна цепочка решений: свойство, которое ты меняешь, выбирает стадию для инвалидации (transform = composite, color = paint, top/width = layout), dirty bits текут вниз по потоку, а containment или content-visibility ограничивают радиус поражения. Compositor layers дёшевы для движения, но дороги для удержания, overlap rule промоутит соседей, которых ты не просил, layout thrashing берётся из чтения геометрии после записи, а INP плюс LoAF замыкают петлю от production-телеметрии назад к конкретной стадии. Спрогнозируй стадию, ранжируй фикс, затем тянись к compositor.