Что влияет на метрику FCP

Ответ

FCP (First Contentful Paint) — это время, за которое браузер отображает первый значимый контент (текст, изображение, SVG и т. д.). Основные факторы:

  1. Скорость загрузки HTML — критически важна, так как без него не начнётся рендеринг.
  2. Блокирующие CSS/JS — стили и скрипты в <head> могут задерживать отрисовку.
  3. Время ответа сервера (TTFB) — если сервер медленный, FCP будет хуже.
  4. Оптимизация шрифтов — неоптимизированные веб-шрифты могут блокировать рендеринг.
  5. Кэширование — использование кэша браузера или CDN ускоряет загрузку ресурсов.

Пример оптимизации:

<!-- Предзагрузка критического CSS -->
<link rel="preload" href="critical.css" as="style" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="critical.css"></noscript>

Ответ 18+ 🔞

Да ты посмотри, какой важный показатель выкатили — FCP! Это, блядь, время, за которое браузер тебе хоть что-то осмысленное на экране покажет: текст, картинку, какую-нибудь хрень. А теперь, сука, держись за стул, почему он может быть хуже некуда.

Первое и главное — скорость загрузки HTML. Ну логично же, ёпта! Если твой основной документ ползёт как черепаха, о каком первом контенте речь? Без него рендеринг даже не начнётся, тут всё просто.

Второе — блокирующие CSS и JS в <head>. Вот это, блядь, классика! Ты в шапку запихнул здоровенные стили и скрипты, браузер их тупо жрёт и не рисует ни хуя, пока всё не проглотит. Рендеринг стоит колом, а пользователь смотрит в белый экран.

Третье — время ответа сервера (TTFB). Если твой сервер тупит и отвечает как сонная муха, то все остальные оптимизации — это, простите, мёртвому припарки. Пока он думает, FCP уже в говне.

Четвёртое — оптимизация шрифтов. О, это отдельная песня! Кастомные веб-шрифты, которые не оптимизированы, могут так заблокировать рендеринг, что мама не горюй. Браузер будет их ждать, вместо того чтобы показать хоть что-то.

Пятое — кэширование. Ну тут, вроде, понятно: если ресурсы лежат в кэше браузера или на быстром CDN, то, ёбана, они загрузятся моментально. А если нет — жди, пока их с другого конца света притащат.

Вот тебе, кстати, пример, как можно немного схитрить с критическими стилями:

<!-- Предзагрузка критического CSS -->
<link rel="preload" href="critical.css" as="style" onload="this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="critical.css"></noscript>

Суть в чём? Говорим браузеру: «Слушай, дружище, этот файл critical.css овердохуища важен, качай его в первую очередь и сразу применяй, как загрузится». А если у юзера JS выключен — ну, на fallback сработает. В общем, хитрая жопа, но иногда помогает.