Как мы ускорили сайт клиента в 4 раза.

Реальная история оптимизации: сайт грузился 8 секунд, стал грузиться 1.8. Рассказываем, что делали, какие инструменты использовали и сколько времени это заняло.

С чего всё началось

К нам обратился владелец интернет-магазина с простой жалобой: "Реклама работает, люди переходят, но почти никто не покупает". Мы открыли сайт и... подождали. И ещё подождали. 8.2 секунды - столько грузилась главная страница.

Для понимания: средний пользователь ждёт максимум 3 секунды. После этого - закрывает вкладку. То есть клиент платил за рекламу, люди переходили, смотрели на белый экран 8 секунд и уходили. Деньги буквально улетали в пустоту.

Мы взялись за работу и за 2 недели ускорили сайт до 1.8 секунды. Вот пошаговая история, как мы это сделали.

Шаг 1: Диагностика - ищем виновных

Прежде чем что-то чинить, нужно понять, что именно сломано. Мы использовали несколько инструментов:

// Инструменты для диагностики скорости сайта:

// 1. Google PageSpeed Insights (бесплатно)
// https://pagespeed.web.dev/
// Показывает оценку от 0 до 100 и конкретные проблемы
// У клиента было: 23 из 100 (мобильная версия)

// 2. Chrome DevTools - вкладка Network
// Открываем сайт с открытыми DevTools (F12)
// Видим каждый файл, который загружается, и его размер
// У клиента: 147 запросов, 12.4 МБ данных

// 3. Chrome DevTools - вкладка Lighthouse
// Встроенный аудит прямо в браузере
// Показывает: производительность, доступность, SEO

// 4. WebPageTest.org (бесплатно)
// Тестирует из разных стран и на разных скоростях
// Показывает "водопад загрузки" - что грузится и когда

Вот что мы нашли:

Проблема 1: Картинки весом с грузовик

Главный виновник - картинки. 87 изображений на главной странице, суммарно 9.6 МБ. Это как скачать песню для каждого посетителя.

Причина: дизайнер загрузил фотографии прямо с фотоаппарата. Каждая - 4000x3000 пикселей, формат PNG. А на сайте они отображаются в окошке 400x300. То есть браузер скачивает огромное фото и сжимает его в 10 раз. Зачем? Хороший вопрос.

// ДО оптимизации:
// photo-product-1.png - 2.4 МБ, 4000x3000px
// photo-product-2.png - 3.1 МБ, 4500x3400px
// ... и так 87 картинок

// ПОСЛЕ оптимизации:
// photo-product-1.webp - 45 КБ, 800x600px
// photo-product-2.webp - 52 КБ, 800x600px

// Что мы сделали:
// 1. Уменьшили размер до реально нужного (800x600)
// 2. Конвертировали PNG в WebP (современный формат, меньше в 5-10 раз)
// 3. Сжали с качеством 85% (разницу глазом не видно)

// Результат: с 9.6 МБ до 890 КБ (в 10 раз меньше!)

Проблема 2: Всё грузится сразу

Все 87 картинок грузились одновременно при открытии страницы. Даже те, которые внизу - за 5 экранов прокрутки. Пользователь их не видит, но браузер честно скачивает каждую.

// ДО: все картинки грузятся сразу
// <img src="product-1.webp" alt="Товар 1" />

// ПОСЛЕ: ленивая загрузка (lazy loading)
// <img src="product-1.webp" alt="Товар 1" loading="lazy" />

// loading="lazy" говорит браузеру:
// "Не грузи эту картинку, пока пользователь до неё не доскроллит"
// Одна строка кода - и экономия мегабайт трафика!

Проблема 3: JavaScript-салат

На сайте было подключено 23 JavaScript-файла. jQuery, jQuery UI, три разных слайдера (зачем?!), анимационная библиотека, которая нигде не использовалась, виджет погоды (на сайте интернет-магазина!), скрипт аналитики от сервиса, который закрылся 2 года назад.

// ДО: 23 скрипта, суммарно 1.8 МБ
// - jquery.min.js (87 КБ)
// - jquery-ui.min.js (250 КБ) - используется 1 функция!
// - slick.js (45 КБ) - слайдер на главной
// - swiper.js (140 КБ) - другой слайдер (не используется)
// - owl.carousel.js (52 КБ) - ТРЕТИЙ слайдер (не используется!)
// - animate.css (78 КБ) - нигде не используется
// - weather-widget.js (34 КБ) - виджет погоды... на магазине обуви
// - analytics-old.js (15 КБ) - сервис закрылся в 2023
// ... и ещё 15 скриптов

// ПОСЛЕ: 3 файла, суммарно 120 КБ
// - app.js (85 КБ) - весь наш код, собранный и сжатый
// - analytics.js (28 КБ) - только Яндекс.Метрика
// - chat-widget.js (7 КБ) - виджет чата

Проблема 4: Шрифты - невидимый враг

На сайте было 7 шрифтов (14 файлов - обычные + жирные). Каждый весил 100-300 КБ. Суммарно - 2.1 МБ только на шрифты. И пока они грузились, текст на сайте не отображался вообще.

/* ДО: 7 шрифтов, 14 файлов, 2.1 МБ */

/* ПОСЛЕ: 2 шрифта, 4 файла, 180 КБ */

/* Оставили только 2 шрифта (заголовки + текст) */
/* Формат WOFF2 (самый компактный) */
/* font-display: swap - текст виден СРАЗУ системным шрифтом */

@font-face {
  font-family: "MainFont";
  src: url("/fonts/main.woff2") format("woff2");
  font-display: swap;  /* ВАЖНО! Текст не пропадает при загрузке */
}

Проблема 5: Сервер без кеширования

Каждый раз, когда пользователь открывал сайт, браузер скачивал ВСЕ файлы заново. Логотип, который не менялся 3 года - скачивался каждый раз.

# Nginx: настройка кеширования статических файлов

# Картинки, шрифты - кешируем на год
location ~* \.(jpg|jpeg|png|webp|gif|ico|woff2|woff)$ {
    expires 365d;
    add_header Cache-Control "public, immutable";
}

# CSS и JavaScript - кешируем на месяц
location ~* \.(css|js)$ {
    expires 30d;
    add_header Cache-Control "public";
}

# Gzip-сжатие - уменьшает размер файлов при передаче
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1024;

# Результат: повторные визиты загружаются за 0.3 секунды

Проблема 6: CSS-простыня

Один CSS-файл на 18,000 строк. Большая часть - стили для страниц, которые пользователь даже не открывает. Стили для админки загружались на публичном сайте.

// Решение: удалили неиспользуемые стили с помощью PurgeCSS

// Было: 18,000 строк (420 КБ)
// Стало: 3,200 строк (68 КБ)

// Также: критический CSS вставили прямо в HTML (inline)
// Это 2-3 КБ стилей, которые нужны для первого экрана
// Остальное - загружается асинхронно

Результаты: до и после

МетрикаДоПослеУлучшение
Время загрузки8.2 сек1.8 секв 4.5 раза
Размер страницы12.4 МБ890 КБв 14 раз
Количество запросов14723в 6 раз
PageSpeed (мобильный)23/10091/100+68 пунктов
PageSpeed (десктоп)45/10097/100+52 пункта
First Contentful Paint4.1 сек0.8 секв 5 раз

А что с продажами?

Через месяц после оптимизации клиент прислал статистику:

  • Конверсия выросла на 34% - больше людей стали покупать
  • Показатель отказов упал на 28% - меньше людей уходят сразу
  • Среднее время на сайте выросло на 45% - люди стали дольше смотреть товары
  • SEO-позиции улучшились - Google любит быстрые сайты

Клиент посчитал, что оптимизация окупилась за 2 недели.

Хотите такие же результаты? Мы в ENOT.SOFTWARE делаем аудит производительности и оптимизацию сайтов. Напишите нам - проведём бесплатный экспресс-аудит вашего сайта за 15 минут.

Чек-лист: что можно сделать самостоятельно

  1. Проверить сайт на PageSpeed Insights
  2. Сжать все картинки (Squoosh.app - бесплатный инструмент)
  3. Добавить loading="lazy" к картинкам ниже первого экрана
  4. Удалить неиспользуемые скрипты и стили
  5. Настроить кеширование на сервере
  6. Включить gzip-сжатие
  7. Оптимизировать шрифты (формат WOFF2 + font-display: swap)

Даже если вы сделаете только первые 3 пункта - уже увидите заметное улучшение. А если хотите выжать максимум - вы знаете, к кому обратиться.

Все статьи
Как мы ускорили сайт клиента в 4 раза | Enot Software