Как ускорить медленный сайт и пройти Core Web Vitals
Пошаговое руководство по ускорению сайта: от замеров до оптимизации
Этот гайд — выжимка из моей практики. Никакой теории, только действия, которые дают измеримый прирост в Google PageSpeed Insights (PSI) и Core Web Vitals.
Шаг 1: Диагностика и замеры
Прежде чем что-то крутить, фиксируем текущие показатели. Используем PageSpeed Insights.
- LCP (Largest Contentful Paint): Цель < 2.5с. Обычно тормозит из-за тяжелых картинок или медленного ответа сервера.
- CLS (Cumulative Layout Shift): Цель < 0.1. Причина — отсутствие размеров у изображений/блоков или подгрузка шрифтов.
- INP (Interaction to Next Paint): Цель < 200мс. Главный враг — «тяжелый» JavaScript, блокирующий основной поток.
Команда для быстрого аудита консоли (Chrome DevTools):
performance.getEntriesByType('navigation') — смотрим domInteractive и loadEventEnd.
Шаг 2: Снижение TTFB (Time to First Byte)
Если сервер «думает» дольше 300-500мс, оптимизация фронтенда не спасет.
- PHP OPcache: Убедитесь, что он включен. В
php.ini:opcache.enable=1,opcache.memory_consumption=128. - База данных: Очистка логов (ревизии постов, транзитные данные).
- MySQL:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%'; - Индекс: Проверьте медленные запросы через
EXPLAIN SELECT.... Часто не хватает индексов на колонках, по которым идет фильтрация.
- MySQL:
- Redis/Memcached: Перенос сессий и кэша объектов в оперативную память.
Шаг 3: Оптимизация изображений и AVIF
Забудьте про JPEG/PNG, если хотите идеальный LCP.
- Конвертация: Используйте
cwebpилиavifenc.- Команда для WebP:
cwebp -q 75 input.jpg -o output.webp - Команда для AVIF:
avifenc --min 20 --max 30 input.jpg output.avif
- Команда для WebP:
- Атрибуты: Всегда прописывайте
widthиheightв теге<img>. Это убивает CLS. - Lazy loading: Добавляйте
loading="lazy"для всех изображений вне первого экрана.
Шаг 4: Critical CSS и отложенный JS
Браузер не начнет рендеринг, пока не скачает все CSS.
- Critical CSS: Вырезаем стили, нужные для отрисовки первого экрана, и вставляем их в
<head>инлайново. Остальной CSS грузим асинхронно:<link rel="preload" href="style.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> - Отложенный JS: Скрипты (аналитика, чаты, виджеты) переносим в конец страницы или используем
defer/async.- Ошибка: Вешать
asyncна jQuery-зависимые скрипты. Они сломаются.
- Ошибка: Вешать
Шаг 5: Кэширование и CDN
Кэширование — это фундамент.
- Browser Cache: Настройте заголовки в
.htaccessили Nginx:nginx location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public, no-transform"; } - CDN: Используйте Cloudflare. Он не только кэширует статику, но и дает бесплатный HTTP/3 (QUIC), что ускоряет загрузку в нестабильных сетях.
Чеклист для проверки
- [ ] TTFB < 200мс.
- [ ] Все картинки в WebP/AVIF.
- [ ] У всех
<img>естьwidthиheight. - [ ] Critical CSS внедрен инлайново.
- [ ] JS-файлы с атрибутом
defer. - [ ] Gzip или Brotli сжатие включено на сервере.
- [ ] Шрифты загружаются через
font-display: swap.
Примеры До/После (реальные кейсы)
| Показатель | До (сайт на WP) | После оптимизации |
|---|---|---|
| LCP | 4.2с | 1.1с |
| CLS | 0.45 | 0.02 |
| INP | 650мс | 110мс |
| Итоговый балл PSI | 38 | 94 |
Что было сделано: 1. Переход на PHP 8.2 + OPcache. 2. Внедрение WebP для всех медиа. 3. Настройка Critical CSS (отсекли 80кб лишнего кода при первом рендере). 4. Удаление 3-х тяжелых плагинов, которые грузили JS в шапку.
Частые ошибки (на чем теряют время)
- «Оптимизация всего подряд»: Не нужно сжимать иконки 16x16 до состояния «невидимости». Оптимизируйте только тяжелые баннеры и фото.
- Агрессивный Minify: Иногда минификация JS ломает функционал. Всегда тестируйте формы заказа и корзину после сжатия.
- Игнорирование шрифтов: Шрифты — главная причина «мигания» текста и высокого CLS. Используйте
font-display: swapи прелоад основных начертаний. - Попытка ускорить «кривой» хостинг: Если сервер на дешевом виртуальном хостинге с оверселлингом, никакие настройки не помогут. Иногда смена тарифа на VPS — самый быстрый путь к успеху.
Резюме
Скорость сайта — это не магия, а техническая дисциплина. Сначала чистим мусор, потом настраиваем сервер, затем оптимизируем доставку ресурсов. Если вы делаете всё по шагам, результат будет виден уже через пару часов работы.
Нужно сделать под ключ? Я специализируюсь на глубокой технической оптимизации сайтов. Разгоняю проекты до «зеленой зоны» PageSpeed, исправляю ошибки Core Web Vitals и настраиваю серверную часть.
Закажите у меня на Freelancehunt: https://freelancehunt.com/freelancer/sspoisk
Комментарии
Отправить комментарий