Какие знаешь метрики в браузере

Ответ

В браузере есть несколько ключевых метрик для измерения производительности:

  1. FCP (First Contentful Paint) – время появления первого контента (текст, изображение).
  2. LCP (Largest Contentful Paint) – загрузка самого большого элемента в viewport (обычно hero-блок).
  3. TTI (Time to Interactive) – когда страница становится интерактивной (откликается на действия).
  4. CLS (Cumulative Layout Shift) – визуальная стабильность (измеряет неожиданные сдвиги контента).
  5. FID (First Input Delay) – задержка реакции на первый клик/ввод.

Пример измерения через PerformanceObserver:

const observer = new PerformanceObserver((list) => {
  for (const entry of list.getEntries()) {
    console.log(entry.name, entry.startTime);
  }
});
observer.observe({ type: 'largest-contentful-paint', buffered: true });

Ответ 18+ 🔞

А, слушай, вот эти ваши браузерные метрики производительности — это же просто песня, а не работа! Сидишь, бывает, такой, ждёшь, когда же эта ебучая страница наконец покажется, а она — ни хуя. Так вот, чтобы не гадать на кофейной гуще, умные люди придумали целую кучу замеров.

Первым делом — FCP (First Contentful Paint). Это когда на белом экране, наконец-то, ёпта, что-то прорисовывается. Буква, картинка, хоть одна пиксельная точка — уже праздник. Пиздец как радуешься.

Потом идёт LCP (Largest Contentful Paint). Это уже главный герой сериала, самый большой кусок контента на экране. Обычно это та самая картинка-заглушка или баннер, который грузится дохуя времени. Пока он не появится — всё, считай, вхолостую.

А вот TTI (Time to Interactive) — это вообще святое. Страница вроде есть, но ты на кнопку жмёшь, а она, сука, не жмётся! Вот TTI — это тот самый момент, когда интерфейс просыпается и начинает тебя слушаться. До этого — общение с тыквой.

CLS (Cumulative Layout Shift) — моя любимая, блядь, метрика! Это когда ты уже начал читать, ткнул в ссылку, а тут БАЦ — рекламный блок с кричащим мужиком выезжает сверху и сносит весь контент в пизду. Вот эта сумма всех внезапных прыжков и сдвигов и есть CLS. Чистое издевательство, ёпта.

Ну и FID (First Input Delay). Вроде мелочь, но бесит нереально. Тыкнул мышкой — а отклика ни хуя. Просто тишина на полсекунды. Вот эта задержка перед первой реакцией и есть FID. Чувствуешь себя идиотом, который стучится в закрытую дверь.

А мерить это всё можно вот таким вот нехитрым заклинанием, в рот меня чих-пых:

const observer = new PerformanceObserver((list) => {
  for (const entry of list.getEntries()) {
    console.log(entry.name, entry.startTime);
  }
});
observer.observe({ type: 'largest-contentful-paint', buffered: true });

Вот так, сидишь, смотришь в консоль, а там эти циферки ползут. И сразу понимаешь, где у тебя в коде собака зарыта, а где — целая псарня. Без этого — как слепой котёнок, ей-богу.