Правило трех секунд в веб-производительности
У вас есть три секунды.
После этого ваши пользователи уходят.
Исследования Google показывают, что 53% мобильных пользователей покидают сайт, если его загрузка занимает более 3 секунд.
Медленные сайты стоят вам денег. Улучшение времени загрузки на мобильных устройствах всего на 0,1 секунды увеличивает конверсию в ритейле на 8,4%.
Производительность — это не просто технический показатель. Это бизнес-метрика.
Чтобы победить, вы должны понимать Core Web Vitals:
• LCP (Largest Contentful Paint): как быстро пользователи видят основной контент. Стремитесь к показателю менее 2,5 с. • INP (Interaction to Next Paint): как быстро страница реагирует на клики. Стремитесь к показателю менее 200 мс. • CLS (Cumulative Layout Shift): насколько стабильна страница. Стремитесь к показателю менее 0,1.
Хватит гадать, пора оптимизировать. Вот как успеть вовремя:
Оптимизация JavaScript
• Отправляйте меньше кода. Используйте динамические импорты, чтобы загружать код только тогда, когда он необходим.
• Используйте tree-shaking. Переходите с CommonJS на ES-модули, чтобы удалить лишний вес.
• Переносите тяжелые задачи в Web Workers. Держите основной поток свободным для ввода пользователя.
• Используйте defer или async. Перестаньте позволять скриптам блокировать парсинг HTML.
CSS и рендеринг
• Инлайните критический CSS. Сначала загружайте только то, что видно на первом экране (above the fold).
• Избегайте layout thrashing. Группируйте операции чтения и записи, чтобы предотвратить постоянные пересчеты.
• Используйте transform и opacity для анимации. Они задействуют GPU и позволяют избежать сдвигов макета.
• Используйте content-visibility: auto. Пропускайте рендеринг контента, который находится за пределами экрана.
Стратегия работы с изображениями
• Используйте современные форматы. WebP и AVIF гораздо меньше, чем JPEG.
• Указывайте атрибуты width и height. Это предотвращает сдвиги макета (CLS).
• Используйте lazy-loading для изображений ниже первого экрана. Не применяйте lazy-loading к главному изображению (LCP hero image).
• Используйте srcset. Отдавайте мобильным пользователям изображения меньшего размера.
Сеть и кэширование
• Используйте CDN. Размещайте контент ближе к пользователям, чтобы снизить задержку (latency).
• Включите сжатие. Используйте Brotli или Zstandard для уменьшения размеров файлов.
• Кэшируйте агрессивно. Используйте неизменяемые (immutable) заголовки кэша для хешированных ассетов.
• Поддерживайте работу bfcache. Избегайте использования события unload, чтобы обеспечить мгновенную навигацию «назад/вперед».
Цель проста: избегать лишней работы.
Самый быстрый код — это тот, который пользователи никогда не скачивают. Самый быстрый запрос — это тот, который браузеру никогда не приходится делать.
Источник: https://dev.to/utkarshbansal01/the-3-second-rule-of-web-performance-and-how-to-beat-it-1he1
