Кейс · 09 мая 2026 · оптимизация PageSpeed

PageSpeed с 52 до 69 без CDN и нового хостинга. 8 шагов за один день.

PageSpeed с 52 до 69. 8 шагов без CDN и смены хостинга: убрали 18 лишних плагинов, WebP, preload, defer. Render Blocking с 12 830ms до 150ms.

kitetech.ru, сайт кайт-школы на WordPress. Страница /kitecamp/ работает на React SPA внутри WP. PageSpeed Mobile показывал 52 балла, LCP 9.3 секунды. За один день без замены хостинга и без CDN мы довели его до 69 баллов, TBT с 800ms до 70ms, Render Blocking с 12 830ms до 150ms. Помогло одно: удаление лишнего.

Главные цифры До и после: что изменилось

Самая тяжёлая страница сайта. React SPA на WordPress грузил всё подряд: и свои компоненты, и 18 лишних плагинов WP. Вот что в итоге изменилось.

МетрикаДоПосле
Performance Mobile5269
Render Blocking12 830 ms150 ms
Total Blocking Time800+ ms70 ms
LCP9.3 s5.6 s
Hero Image117 KB (JPG)37 KB (WebP)
SEO-оценка92100

Контекст В чём была настоящая проблема

WordPress тащит все плагины на каждую страницу: WooCommerce, Smush, CF7, YouTube-фасад, Quiz. На /kitecamp/ они не нужны, там React сам управляет отображением. Но WP об этом не знает и грузит 18 лишних JS/CSS файлов, блокируя рендер на 12+ секунд.

React SPA внутри WordPress: двойная нагрузка

18 лишних файлов плагинов на странице, которой они не нужны. Браузер загружает jQuery и WooCommerce прежде, чем показать первый пиксель React-приложения. Render Blocking 12 830ms складывается ровно из этих файлов.

Hero-изображение 117 KB JPG

Фоновое фото первого экрана работает как LCP-элемент. От его загрузки зависит оценка Largest Contentful Paint. 117 KB в JPG на медленном 4G дают 1-2 лишних секунды до первого контента.

Параллакс и анимации Framer Motion

useScroll и useTransform вешали rAF-цикл 60fps при каждом скролле. На слабых Android-телефонах это главная причина подвисающего интерфейса. Убрать параллакс быстрее, чем его оптимизировать.

Методология 8 шагов, которые дали результат

  1. Подключить файл оптимизаций в functions.php

    Файл kitecamp-perf.php с хуками уже существовал, но висел неподключённым. Добавили один require в functions.php, и это открыло дорогу всем остальным шагам.

    require get_template_directory() . '/inc/kitecamp-perf.php';

  2. Снять 18 лишних JS-файлов плагинов

    Сняли через wp_dequeue_script с приоритетом 9999 и двойным хуком. Приоритет тут решает: плагины регистрируются на разных приоритетах, и при 100 они успевают перезаписать. Сработало именно 9999 плюс оба хука (wp_enqueue_scripts и wp_print_scripts).

    Render Blocking: 12 830ms → 150ms

  3. defer для плагина кнопки мессенджеров

    Плагин нужен визуально, но его JS не нужен до интерактивности. Через фильтр script_loader_tag добавили defer. CSS плагина сделали асинхронным через media="print" onload="this.media='all'".

    TBT: 460ms → 70ms

  4. Конвертировать изображения JPG → WebP

    5 фото слайдера и hero-фото мы конвертировали через Python Pillow с quality=82. Суммарная экономия около 260 KB. На кайт-фото quality=82 держит баланс между весом и качеством: глазом разницу с оригиналом не поймать.

    Hero: 117 KB → 37 KB (-68%)

    img = Image.open("hero.jpg")
    img.save("hero.webp", "webp", quality=82, method=6)

  5. Preload для LCP-изображения

    Добавили <link rel="preload" as="image" fetchpriority="high"> в <head>. Браузер начинает грузить картинку сразу при парсинге HTML, не дожидаясь CSS и JS.

    LCP улучшился на ~0.5s

  6. Google Fonts: асинхронная загрузка

    Заменили синхронный <link rel="stylesheet"> на паттерн media="print" onload. Шрифты больше не блокируют первый рендер. Добавили <noscript>-фолбэк для браузеров без JS.

    Убрали 750ms блокировки

  7. Убрать параллакс и молочный градиент hero

    Удалили useScroll и useTransform из Framer Motion, убрали нижний gradient overlay. Фото стало статичным, rAF-цикл на скролле исчез. Прокрутка стала плавнее, анимация при этом никуда не делась, просто перестала грузить процессор.

  8. Preload для шрифтов темы WordPress

    Добавили <link rel="preload" as="font"> для Gilroy-Semibold.woff2 и Gilroy-Extrabold.woff2 в header.php. Шрифты hero-блока начинают загружаться немедленно.

    FCP главной страницы улучшился

Ключевой вывод Сначала убери лишнее — потом оптимизируй

18 лишних JS-файлов давали 12 секунд блокировки. Никакой кеш и CDN не спасут, если браузер всё равно вынужден загрузить jQuery и WooCommerce на React-страницу. Диагностика через curl плюс grep по id="*-js" вытаскивает точные handle-имена за 5 минут.

Для React SPA на WordPress 69 баллов это уже рабочий потолок без переделок. Дальше рост упирается в code splitting бандла (сейчас 423 KB одним куском), critical CSS inline и, скорее всего, смену хостинга на LiteSpeed: текущий Hostia не даёт кешировать на уровне сервера.

Готовый инструмент Промт для аудита PageSpeed вашего сайта

Скопируйте этот промт, вставьте в Claude или ChatGPT, укажите свои данные. На выходе получите пошаговый план оптимизации с конкретным PHP/JS/HTML кодом.

Промт для аудита PageSpeed вашего сайта
Ты эксперт по Core Web Vitals и PageSpeed. Мне нужно улучшить производительность WordPress-сайта.

Контекст сайта:
- CMS: WordPress [версия]
- Хостинг: [провайдер и тариф]
- Тема: [название, кастомная или готовая]
- Активные плагины: [перечисли WooCommerce, Yoast, CF7 и т.д.]
- Есть ли React/Vue SPA на отдельных страницах: [да/нет]
- Текущий PageSpeed Mobile: [число]

Вот мои проблемы из PageSpeed Insights:
[вставь список: Render blocking requests, Unused JavaScript, LCP и т.д.]

Нужно:
1. Найти точные WP handle-имена блокирующих скриптов (id="handle-name-js") и снять их через wp_dequeue_script с приоритетом 9999.
2. Для плагинов, которые нужны визуально, сделать JS defer, CSS асинхронным через media="print" onload.
3. Проверить изображения: какие конвертировать в WebP, какой quality оптимален.
4. Добавить preload для LCP-элемента.
5. Если есть Google Fonts, сделать загрузку асинхронной.
6. Если есть React/Vue SPA, убедиться что WP-плагины не грузятся на этих страницах.

Формат: пронумерованный список от важного к менее важному, для каждого шага конкретный код и ожидаемый выигрыш в ms.

Что дальше Куда расти от 69 баллов

Code splitting React бандла

Сейчас весь React грузится одним файлом 423 KB. Калькулятор, слайдер, FAQ можно разнести на lazy chunks через React.lazy() и Suspense. Это снимет с первого экрана примерно 50-80 KB.

Critical CSS inline

Вынести стили первого экрана в <style> прямо в HTML, остальной CSS грузить асинхронно. Убирает блокировку index-*.css (1 500ms).

Смена хостинга на LiteSpeed

Текущий Hostia не поддерживает LiteSpeed, поэтому серверный кеш не работает. Переход снизит TTFB с ~300ms до ~30ms. Это даст больше, чем все шаги оптимизации вместе взятые.

Хотите так же? Провести аудит PageSpeed вашего сайта

Аудит покажет точные handle-имена блокирующих скриптов, список изображений под конвертацию и пошаговый план. Обычно первые изменения дают +10-15 баллов за один рабочий день.

Или посмотрите кейс по защите заявок от утечки к конкурентам.

Если сайт проще собрать заново, чем лечить, посмотрите, как я собираю сайты вместе с нейросетью.

Владимир Кулиев

Об авторе

Меня зовут Владимир Кулиев. Сначала я занялся вайбкодингом сам: собрал себе сайты, ботов и автоматизацию. Теперь делаю такое же для клиентов.

  • 13 лет веду свою кайт-школу, 2000+ клиентов
  • Собрал публикатор для нескольких площадок и Telegram-бота с метками для рекламы
  • Настраиваю Яндекс Директ и Яндекс Бизнес
  • Строю SEO-систему для собственного сайта

Что собрал

Все кейсы

Клиентов показываю без названий.

Какой продукт вам нужен

Выберите свою ситуацию, покажу, что подходит и сколько стоит.

Начните с доступа

Гайд про регистрацию и оплату Claude из России: текст со скриншотами, что делать, если не проходит карта.

Схематично: вопрос про доступ и ответ из гайда

Группа, один на один или установка

Вы собираете своё, я рядом: в Zoom с группой или лично.

Схематично: встреча в Zoom

Сделаю за вас

Разработка и ведение под ваш процесс. Типовые сайты и боты лежат в услугах.

Схематично: выбор задачи

Помочь выбрать продукт

Сделать самому

Гайды, уроки и шаблоны без живой поддержки, в своём темпе.

  • Гайд «Старт с Claude»

    Регистрация в Claude из России: номер, почта, оплата и защита от бана.

    Что внутри

    • 15 глав текстом, около 3,5 часа
    • VPN, оплата картами и USDT
    • Модели, проекты, артефакты
    990 ₽ разово
  • Гайд «Claude Code глубже»

    Sub-агенты, hooks и MCP-серверы. 10 глав, доступ навсегда.

    Что внутри

    • 10 глав, около 6-7 часов
    • MCP-серверы, скиллы, Computer Use
    • Cron и бенчмарк моделей
    990 ₽ разово
  • Семь уроков по вайбкодингу

    Лендинг, Telegram-бот и парсер данных на Claude Code. Без поддержки.

    Что внутри

    • Около 4 часов
    • Установка, промпты, отладка
    • Безопасность и секреты
    1 490 ₽ разово
  • 12 готовых шаблонов

    Заготовки для Claude Code, MCP и n8n, чтобы не собирать с нуля.

    Что внутри

    • CLAUDE.md и промпт-паки
    • Конфиги MCP и сценарии n8n
    • Обновления без подписки
    4 990 ₽ разово

Работать со мной

Практикум и менторство я веду сам. Группа идёт неделю, менторство один месяц.

  • Практикум на неделю

    Группа 8-10 человек в Zoom, 7 встреч по 2 часа. За неделю собираете бота, сайт и таблицу-CRM на своём сервере.

    Что внутри

    • Лендинг, Telegram-бот, Google Sheets
    • Деплой на сервер и безопасность
    • Записи встреч остаются у вас
    15 000 ₽
  • Менторство один на один

    Четыре встречи по 2 часа за месяц на вашем проекте, всего 8 часов. Беру двух человек одновременно.

    Что внутри

    • Бриф и разбор вашего стека
    • Личный чат в Telegram
    • Запись каждой встречи
    72 000 ₽ за месяц

Разработка под заказ

Если делать самому некогда, я собираю и веду систему за вас.

  • Кастомная разработка

    CRM, платежи и связка систем под ваш процесс. Стандартные боты и ИИ-агентов беру как услугу.

    Что внутри

    • Бриф и разбор задачи до договора
    • Договор, оплата этапами 50% и 50%
    • 4 недели сопровождения после сдачи
    Цена по согласованию
  • Абонемент на ведение

    Помесячное ведение собранной системы: правки, новые сценарии, отчёт.

    Что внутри

    • Три тарифа: 20 000, 35 000 и 60 000 ₽ в месяц
    • Реакция в течение рабочего дня
    • Договор помесячный
    от 20 000 ₽ в месяц

Остались вопросы по кейсу?

Напишите мне в Telegram: подскажу, что подойдёт вам. Или оставьте заявку, я отвечу сам.

Claude CodeChatGPTAntigravityVS CodeGeminiCodexGigaChatYandexGPT
Хватайте и бросайте

Или оставьте контакты, я свяжусь

Напишите, какая задача у вас, и я отвечу сам.

Данные нужны только для ответа вам

Форма работает с включённым JavaScript. Напишите мне в Telegram или позвоните +7 909 457‑10‑62.