Оптимизация First Contentful Paint (FCP) сайта

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Оптимизация First Contentful Paint (FCP) сайта
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Оптимизация FCP (First Contentful Paint)

FCP — время до появления первого видимого контента: текст, изображение, SVG, canvas. Хорошее значение: ≤ 1.8 секунды. FCP напрямую влияет на восприятие скорости — пользователь видит, что что-то происходит.

Разница FCP и LCP

  • FCP — первый пиксель контента (любого)
  • LCP — самый крупный элемент

Плохой FCP почти всегда означает плохой LCP. Хороший FCP не гарантирует хороший LCP.

Render-blocking ресурсы — главная причина плохого FCP

Браузер останавливает рендеринг на каждый <link> CSS и <script> в <head>.

<!-- Плохо -->
<head>
    <link rel="stylesheet" href="/css/app.css">      <!-- блокирует -->
    <link rel="stylesheet" href="/css/plugins.css">  <!-- блокирует -->
    <script src="/js/analytics.js"></script>         <!-- блокирует -->
</head>

<!-- Хорошо -->
<head>
    <!-- Critical CSS inline -->
    <style>
        body { margin: 0; font-family: system-ui, sans-serif; }
        .header { height: 64px; background: #fff; }
        /* ... минимальный CSS для above-the-fold контента ... */
    </style>

    <!-- Non-critical CSS async -->
    <link rel="preload" href="/css/app.css" as="style"
          onload="this.onload=null;this.rel='stylesheet'">

    <!-- Scripts — defer или async -->
    <script defer src="/js/app.js"></script>
    <script async src="/js/analytics.js"></script>
</head>

Critical CSS — автоматическая генерация

// vite.config.ts с плагином critters
import { defineConfig } from 'vite';
import { critters } from 'critters';

export default defineConfig({
    plugins: [
        critters({
            preload: 'swap',     // preload для некритичных стилей
            pruneSource: false,  // не удалять CSS из исходного файла
        })
    ]
});

Для Laravel — пакет spatie/laravel-vite-plugin + настройка Nginx для отдачи pre-built страниц.

Server-Side Rendering для React

SPA (Single Page Application) имеют плохой FCP — пользователь видит пустой белый экран пока не выполнится JS.

// Next.js — SSR "из коробки"
// Inertia.js — SSR для Laravel

// vite.config.ts для Inertia SSR
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import react from '@vitejs/plugin-react';

export default defineConfig({
    plugins: [
        laravel({ input: 'resources/js/app.tsx', ssr: 'resources/js/ssr.tsx' }),
        react(),
    ],
});

SSR улучшает FCP на 0.5–2 секунды для медленных соединений и устройств.

Шрифты

/* Системный стек — нулевая задержка */
body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

/* Если нужен кастомный шрифт — preload + font-display: swap */
@font-face {
    font-family: 'Inter';
    src: url('/fonts/inter-regular.woff2') format('woff2');
    font-display: swap; /* показать fallback сразу, заменить когда загрузится */
    unicode-range: U+0400-045F, U+0490-0491; /* только кириллица */
}
<link rel="preload" href="/fonts/inter-regular.woff2"
      as="font" type="font/woff2" crossorigin>

Измерение FCP

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

Быстрый чеклист FCP

  • Inline critical CSS (above-the-fold стили)
  • Все внешние стили — async через preload
  • Скрипты — defer или async
  • Шрифт — preload + font-display: swap
  • TTFB < 600 мс (кеш сервера)
  • SSR включён (для React/Vue SPA)
  • Убраны неиспользуемые CSS-правила (PurgeCSS/Tailwind purge)

Срок оптимизации: 1–2 дня для настройки critical CSS и render-blocking ресурсов.