Логотип seo-prodvizhenie-biznesa.ru
+7 (921) 333-77-45

Как повысить скорость загрузки сайта

Как повысить скорость загрузки сайта
Анатолий Кузнецов
Анатолий Кузнецов
SEO-оптимизатор с 20-летним стажем. Автор блога seo-prodvizhenie-biznesa.ru о продвижении и доработке сайтов.

Вопрос «как повысить скорость загрузки сайта» почти всегда начинают решать с конца: сжимают картинки, ставят плагин оптимизации, гонятся за баллами в тесте. Потом замеряют снова и видят прежнюю цифру, потому что сервер как отдавал первый байт через полторы секунды, так и отдаёт, а картинки тут вообще ни при чём.

Работа со скоростью начинается с разделения: тормозит сервер или тормозит страница. Это два разных диагноза с непересекающимся лечением, и пока они не разделены, любые действия — лотерея. Ниже — как отличить одно от другого, что реально тяжёлое на типовом сайте и в каком порядке за это браться, чтобы не потратить неделю на пятипроцентный выигрыш.

Что измерять: одной цифры «скорость сайта» не существует

Показателей несколько, и каждый отвечает за свой участок пути от нажатия на ссылку до момента, когда страницей можно пользоваться. Смешивать их — главная причина бессмысленной оптимизации.

Показатель Что описывает Ориентир Куда копать при превышении
Время до первого байта Сколько сервер думал, прежде чем начать отвечать до 0,5 с, хорошо — до 0,2 с Хостинг, версия PHP, кэш, база данных
Отрисовка основного содержимого Когда человек увидел главный блок экрана до 2,5 с на мобильном Вес картинок, блокирующие стили и шрифты
Отклик на действие Задержка между нажатием и реакцией до 200 мс Тяжёлые скрипты, чужие виджеты
Сдвиг вёрстки при загрузке Прыгает ли содержимое, пока страница грузится не более 0,1 Не заданы размеры картинок, поздние шрифты, баннеры
Полный вес страницы Сколько мегабайт качает браузер до 1,5 МБ на мобильном Изображения, видео, наборы шрифтов
Число запросов Сколько отдельных файлов запрашивается до 50–60 Несобранные скрипты и стили, сторонние сервисы

Первый показатель — разделительная линия. Если сервер отвечает за 1,5 секунды, а вы сжали картинки и выиграли 300 миллисекунд на отрисовке, посетитель всё равно смотрит на белый экран полторы секунды до начала загрузки. Сначала сервер, потом страница — порядок не обсуждается.

Второй момент — где мерить. Лабораторный тест вроде PageSpeed считает одну страницу на условном недорогом телефоне: он хорошо показывает причины, но плохо описывает ваш сайт целиком. Данные о реальных посетителях лежат в Метрике, в отчёте по времени загрузки с разбивкой по устройствам и браузерам. Правильный порядок — увидеть проблему в реальных данных и найти причину в лабораторном тесте.

И третье: мерить надо не только главную. Карточка товара, страница фильтра, результат внутреннего поиска и статья блога собираются разными шаблонами, и разница между ними бывает пятикратной. Если главная отвечает за 200 миллисекунд, а карточка за две секунды — проблема в шаблоне карточки, а не «в сайте».

Время ответа сервера: из чего оно складывается

Первый байт приходит после того, как сервер принял запрос, запустил обработчик, собрал страницу из шаблона и данных и начал отдавать результат. Задержка на любом из этапов складывается в общую цифру.

  • Тариф хостинга. На виртуальном хостинге сотни сайтов делят одни процессоры и диски. Признак упора в лимиты — плавающее время ответа: утром 300 миллисекунд, вечером две секунды при той же посещаемости. Средняя цифра при этом выглядит приемлемо, поэтому смотреть надо разброс, а не среднее.
  • Версия языка. Разница между устаревшей и актуальной версией PHP на типовом сайте даёт 20–30 процентов скорости без единой правки кода. Переключается в панели хостинга, но требует проверки: старые плагины на новой версии иногда падают.
  • Отсутствие кэша. Без него страница собирается заново на каждый заход: запросы к базе, обработка шаблона, работа плагинов. С кэшем сервер отдаёт готовый файл.
  • Запросы к базе. Обычно следствие избытка расширений и тяжёлой темы. Диагностируется профилировщиком: он показывает, сколько запросов выполняется на странице и какие из них самые долгие. Сто с лишним запросов на одну страницу — верный признак, что тема или набор плагинов работают неэффективно.
  • Удалённость сервера. Физическое расстояние добавляет десятки миллисекунд на каждый запрос. Для сайта с российской аудиторией сервер в России или ближайшем регионе — разумный выбор по умолчанию.
  • Лишние редиректы. Каждый шаг цепочки — отдельный запрос к серверу. Цепочка из трёх редиректов на мобильном канале легко съедает полсекунды до того, как началась загрузка полезного содержимого.

Практический способ понять, в хостинге ли дело: замерить время ответа в разное время суток несколько дней подряд и посмотреть на разброс. Стабильные 400 миллисекунд — вопрос к сайту. Скачки от 200 миллисекунд до трёх секунд — вопрос к тарифу или соседям по машине.

Кэширование: три уровня и что даёт каждый

Кэш — самый дешёвый способ ускорения из существующих, потому что не требует переделки сайта. Уровней три, и работают они независимо.

Уровень Как работает Что даёт Чем опасен
Кэш страниц Готовый HTML сохраняется файлом и отдаётся без обработки Сокращает время ответа в разы Ломает динамические блоки: корзину, формы с токеном, личный кабинет
Кэш кода Скомпилированный код держится в памяти сервера Заметный выигрыш без риска для содержимого Требует доступа к настройкам сервера
Кэш браузера Статика хранится у посетителя и не качается повторно Ускоряет второй и последующие заходы При обновлении файлов нужен новый адрес или версия в имени
Кэш базы данных Результаты частых запросов держатся в памяти Помогает каталогам и сайтам с фильтрами Настраивается на стороне сервера, не в панели
Сеть доставки содержимого Статика раздаётся с ближайшего к посетителю узла Помогает при географически широкой аудитории Лишнее звено, которое само может стать точкой отказа

Важное предупреждение по первому уровню. Полностраничный кэш сохраняет собранную страницу целиком, включая одноразовые токены форм. На сайте, где заявка отправляется без перезагрузки страницы, это регулярно приводит к тому, что форма перестаёт отправляться: посетитель нажимает кнопку, видит ошибку и уходит. Ускорение при этом честное, а заявок нет. Поэтому после включения кэша первое, что нужно сделать, — отправить заявку своими руками из режима инкогнито и убедиться, что письмо дошло.

Второе предупреждение — про правки. Пока полностраничный кэш включён, изменения на сайте не видны до сброса кэша. Это ловушка, в которую попадают все: правку внесли, страницу обновили, ничего не поменялось, начинают править второй раз. Привычка сбрасывать кэш после любой правки экономит часы.

Картинки: самый тяжёлый груз обычной страницы

На типовом сайте изображения дают больше половины веса страницы. Работают с ними по трём направлениям, и все три обязательны — по отдельности каждое даёт немного.

Что делаем Механика Типичный выигрыш
Приводим к реальному размеру Не грузить фото шириной 4000 пикселей в блок шириной 800 Кратное уменьшение веса файла
Меняем формат WebP вместо JPEG и PNG при том же визуальном качестве 25–50% веса
Включаем отложенную загрузку Всё, что ниже первого экрана, грузится при прокрутке Ускоряет первую отрисовку, а не общий вес
Задаём размеры в разметке Браузер заранее резервирует место под картинку Убирает прыжки вёрстки при загрузке
Отдаём разные размеры под устройства Телефон получает узкую версию, десктоп — широкую Основной выигрыш именно на мобильных

Два нюанса, которые ломают результат. Первый: отложенную загрузку нельзя вешать на картинку первого экрана — браузер отложит именно то изображение, ради которого посетитель и ждёт страницу, и показатель отрисовки станет хуже, а не лучше. Второй: сжатие «в ноль» экономит килобайты, но портит фотографии товара, а плохое фото стоит дороже сэкономленного трафика. Разумная планка — визуально неотличимо от оригинала при просмотре на телефоне.

Отдельная статья расхода — фоновые видео и анимации в шапке. Ролик на несколько мегабайт в первом экране гарантированно проваливает любые показатели скорости на мобильном, и заменять его картинкой почти всегда выгоднее, чем оптимизировать.

Скрипты, стили и шрифты: очередь на отрисовку

Браузер строит страницу последовательно. Пока он не получил и не разобрал стили, отрисовывать нечего; пока он не выполнил блокирующий скрипт в шапке, разбор разметки стоит. Поэтому вес скриптов важен, но их положение и способ подключения — важнее.

  • Некритичные скрипты откладываются. Атрибуты defer и async убирают скрипт из очереди, блокирующей отрисовку. Для аналитики, чатов и слайдеров это безопасно.
  • Стили первого экрана встраиваются в страницу, остальное грузится следом. Приём даёт самый заметный выигрыш по времени до появления содержимого.
  • Лишние файлы удаляются. Типовой сайт тянет тридцать-сорок файлов, половина которых нужна на одной странице из десяти. Слайдер и его стили не нужны на странице контактов, скрипт корзины — в блоге.
  • Шрифты сокращаются до нужных начертаний. Четыре толщины одного шрифта в двух форматах — это восемь файлов; обычно хватает двух начертаний. Полезно ещё указать браузеру показывать текст системным шрифтом, пока грузится основной, иначе первые секунды страница стоит без текста.
  • Иконочные шрифты заменяются на SVG. Целый шрифтовой файл ради пяти иконок — распространённая и легко устраняемая трата.

Про плагины «всё в одном» стоит сказать отдельно. Они действительно закрывают базовые вещи одной галочкой, но агрессивные режимы — объединение всех скриптов, отложенная загрузка всего подряд, удаление «неиспользуемых» стилей — регулярно ломают вёрстку и формы. Порядок включения такой: одна настройка за раз, проверка ключевых страниц и отправки заявки, только потом следующая. Включить всё сразу и потом искать, что именно сломалось, дороже по времени.

Сторонние сервисы: чужой сервер тормозит вашу страницу

Счётчики, чаты, виджеты отзывов, карты, пиксели рекламных систем, формы подписки — каждый из них добавляет запросы к чужому серверу, на скорость которого вы не влияете. И если чужой сервер отвечает медленно, ваша страница ждёт вместе с ним.

Проверяется это на вкладке сети в консоли браузера: отсортируйте запросы по времени и посмотрите, какие домены оказались в верхних строчках. Если это не ваш домен, вы нашли причину. Кстати, счётчик аналитики тоже иногда попадает в этот список — разбор случая, когда Метрика тормозит скорость сайта, лежит отдельно.

Что с этим делают:

  1. Инвентаризация. Выписать все внешние подключения и напротив каждого честно ответить, что оно приносит. Пиксели отключённых год назад кампаний висят на сайтах годами.
  2. Загрузка по действию. Чат, карта и виджет отзывов подгружаются не при открытии страницы, а по нажатию на заглушку. Для карты это особенно выгодно: она тяжёлая и нужна единицам.
  3. Откладывание. Всё, что не влияет на первый экран, подключается после загрузки основного содержимого.
  4. Один инструмент вместо трёх. Два счётчика аналитики, две системы чата и три формы подписки — обычная картина на сайте, которым занимались разные исполнители.

Почему на мобильных всё хуже и что с этим делать

Разрыв между десктопом и телефоном — не выдумка тестов. У телефона слабее процессор, поэтому разбор и выполнение скриптов занимает в несколько раз больше времени; канал нестабилен, и каждое лишнее соединение стоит дороже; экран узкий, поэтому широкие изображения качаются впустую.

Практические выводы отличаются от десктопных:

  • Главный резерв на мобильном — не вес картинок, а объём исполняемого кода. Отложить и выкинуть скрипты выгоднее, чем пережать фотографии ещё на десять процентов.
  • Отдавать телефону узкие версии изображений обязательно: без этого мобильный посетитель качает десктопный вес.
  • Всплывающие окна и баннеры согласия часто грузятся раньше содержимого и портят и скорость, и первое впечатление.
  • Проверять результат нужно на настоящем телефоне на мобильном интернете, а не в уменьшенном окне браузера на быстром канале.

Полезный приём для проверки: в инструментах разработчика ограничьте скорость соединения и замедлите процессор, а потом посмотрите, что видит человек в первые три секунды — пустой экран, прыгающую вёрстку или читаемый текст. Это честнее любого балла.

Порядок работы и до каких значений доводить

Порядок важен, потому что каждый следующий шаг измеряется относительно предыдущего. Если сделать всё разом, вы не узнаете, что именно дало результат, а что сломало форму.

Шаг Что делаем Ожидаемый эффект
1 Замер исходного состояния и резервная копия Точка отсчёта и возможность отката
2 Замер времени ответа сервера в разное время суток Разделение проблем сервера и страницы
3 Версия PHP, кэш кода, кэш страниц Самый крупный выигрыш при наименьших усилиях
4 Проверка форм и динамических блоков после кэша Гарантия, что заявки доходят
5 Размеры и формат изображений, отложенная загрузка Основное снижение веса страницы
6 Скрипты и стили: удаление лишнего, откладывание Ускорение первой отрисовки, особенно на мобильных
7 Ревизия сторонних сервисов Снятие зависимости от чужих серверов
8 Повторный замер и проверка всех типов страниц Подтверждение результата и поиск регрессий

Теперь про остановку. Скорость работает как порог, а не как шкала: сайт не должен быть медленным, но разница между хорошим и отличным результатом на поведении посетителей почти не сказывается. Практический ориентир — ответ сервера до полусекунды и появление содержимого на телефоне в пределах двух с половиной секунд. Дошли до этих значений — переключайтесь на содержание и предложение, там отдача выше.

Гнаться за сотней баллов в тесте смысла нет: это соревнование с измерительным прибором. Последние двадцать баллов обычно требуют переделки шаблона и отключения нужных бизнесу виджетов, а посетитель разницы не заметит. Если исполнитель предлагает такую работу как основную задачу продвижения, стоит уточнить, чем она обоснована — это, кстати, один из пунктов, по которым проверяют работу SEO-специалиста.

Частые вопросы

Влияет ли скорость на позиции напрямую?
Через доступность и поведение. Медленная страница теряет часть посетителей до загрузки, и это видно в поведенческих данных; медленный сервер замедляет обход сайта роботом. Прямого коэффициента «минус секунда — плюс пять позиций» не существует, но при прочих равных медленный сайт проигрывает.

Хватит ли одного плагина оптимизации?
Для сайта услуг на несколько десятков страниц — часто да, при условии аккуратной настройки и проверки форм. Для каталога плагин закрывает верхний слой, но не решает вопросы тарифа хостинга, версии языка и тяжёлых запросов к базе. Плагин ускоряет отдачу, он не переписывает то, что медленно работает внутри.

Почему после установки плагина сломались формы?
Чаще всего из-за полностраничного кэша, который сохранил одноразовый токен формы, или из-за агрессивного объединения скриптов. Порядок разбора: отключить кэш для страниц с формами, проверить отправку, затем по одной возвращать настройки объединения и после каждой проверять заявку.

Нужна ли сеть доставки содержимого обычному сайту?
Если посетители в одном регионе, а сервер стоит там же, выигрыш будет символическим, а звеньев в цепочке станет больше. Смысл появляется при широкой географии или большом объёме статики: тяжёлых картинок, видео, файлов для скачивания.

Стоит ли переезжать на выделенный сервер ради скорости?
Только после того, как исчерпаны более дешёвые шаги. Часто оказывается, что дело не в мощности, а в отсутствии кэша и в теме, которая делает сотню запросов к базе на каждой странице. Переезд в такой ситуации даёт разовое улучшение, а причина остаётся и через полгода проявляется снова.

Как понять, что причина в хостинге, а не в сайте?
По разбросу времени ответа. Замерьте его несколько раз в сутки в течение нескольких дней. Стабильная величина, пусть и большая, говорит о сайте: он всегда собирается одинаково долго. Скачки в несколько раз при одинаковой посещаемости — признак того, что вы упираетесь в лимиты тарифа или в соседей по машине.

Как понять, на каком хостинге сайт и не в нём ли причина медленной работы:

Коротко

  • Повышать скорость загрузки сайта начинают с замера ответа сервера: он отделяет проблемы хостинга от проблем страницы, и лечатся они по-разному.
  • Самый крупный выигрыш при наименьших усилиях дают актуальная версия PHP, кэш кода и кэш страниц.
  • После включения кэша обязательно отправьте заявку своими руками: полностраничный кэш регулярно ломает формы, и ускорение оборачивается потерей обращений.
  • Картинки приводят к реальному размеру, переводят в WebP, задают им размеры в разметке и грузят отложенно — кроме изображения первого экрана.
  • На мобильных главный резерв не в весе картинок, а в объёме исполняемого кода: откладывать и удалять скрипты выгоднее, чем дожимать фотографии.
  • Скорость — порог, а не соревнование: ответ сервера до полусекунды и содержимое на телефоне за две с половиной секунды, дальше отдача выше от работы над содержанием.

Если непонятно, за что браться на конкретном сайте и что даст результат первым, это разбирается на SEO-консультации: смотрю замеры, нахожу узкое место и говорю, в каком порядке чинить. Когда нужно не разобрать, а ускорить руками, беру такие задачи в работу.

Увеличьте позиции и продажи вашего сайта

Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:

Анатолий Кузнецов — SEO-оптимизатор

Остались вопросы по продвижению?

Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.

Связаться со мной →

Комментарии

Артём Вершинин

Поставили плагин кэширования, PageSpeed вырос с 38 до 82, все обрадовались. Через две недели заметили, что заявок стало вдвое меньше. Связь есть?

Анатолий Кузнецов автор

Связь почти наверняка есть, и это самая частая расплата за полностраничный кэш. Он сохраняет готовую страницу вместе с одноразовым токеном формы, а при следующем заходе отдаёт её другому человеку — токен уже недействителен, и отправка падает с ошибкой. Проверьте прямо сейчас: откройте сайт в режиме инкогнито, отправьте заявку и дождитесь письма. Если письмо не пришло, исключите страницы с формами из кэша или включите режим, при котором динамические части подгружаются отдельно. И заведите привычку: любая настройка ускорения заканчивается проверкой отправки заявки, а не проверкой балла.

Милана Воропаева

У нас сайт то летает, то висит по десять секунд. Хостер говорит, что всё в порядке и проблема в сайте. Как доказать обратное?

Анатолий Кузнецов автор

Соберите данные, а не ощущения. Настройте замер времени до первого байта раз в пятнадцать минут в течение недели — подойдёт любой бесплатный сервис мониторинга. На выходе будет график, и по нему сразу видно, что происходит: если время ответа скачет от 200 миллисекунд до нескольких секунд при ровной посещаемости, дело не в сайте — он собирается одинаково всегда. Дополнительный аргумент: посмотрите в панели хостинга статистику по лимитам процессов и памяти, там обычно видны упоры в потолок тарифа. С графиком и статистикой лимитов разговор с поддержкой идёт совсем иначе, чем с фразой «у нас тормозит».

Степан Ветошкин

Перевёл все картинки в WebP, вес упал почти вдвое, а показатель отрисовки почти не изменился. Ожидал большего.

Анатолий Кузнецов автор

Значит, узкое место не в картинках, и это нормальный результат — вы просто исключили одну гипотезу. Посмотрите на водопад запросов в консоли: если между приходом первого байта и началом отрисовки лежит секунда, время съедают блокирующие стили, шрифты или скрипт в шапке. Второй частый случай — картинка первого экрана попала под отложенную загрузку, и браузер откладывает ровно то изображение, по которому и считается показатель. Третье, что стоит проверить, — время до первого байта: если оно само по себе большое, вес страницы вторичен. Начните с водопада, он отвечает на вопрос за пять минут.

Ольга Вагина

А правда, что чат и карту можно грузить по клику? Разработчик говорит, что так делать нельзя, потому что виджеты официальные и их код менять запрещено.

Анатолий Кузнецов автор

Код виджета менять и не нужно — меняется момент его подключения. Вместо того чтобы вставлять скрипт в страницу сразу, вы показываете лёгкую заглушку: картинку карты со статичным изображением или кнопку чата, а настоящий виджет подключается при первом касании или при прокрутке до этого блока. Сам код при этом остаётся ровно тем, который выдал сервис. Для карты выигрыш обычно самый заметный: она тяжёлая, а открывает её меньшинство посетителей. Единственное, за чем стоит следить, — чтобы заглушка визуально не отличалась от готового блока, иначе получите прыжок вёрстки в момент подмены.

Кирилл Вязников

Не согласен насчёт «не гнаться за сотней баллов». Мы вытащили мобильный PageSpeed до 95 и увидели рост конверсии. Так что смысл есть.

Анатолий Кузнецов автор

Если вы шли с низкого балла, рост конверсии почти наверняка дали первые шаги, а не последние: разница между медленным и нормальным сайтом действительно ощутима, разница между хорошим и отличным — уже нет. Проверить это можно по своим же данным: посмотрите, в какой момент работ изменилась конверсия, обычно перелом приходится на включение кэша и разгрузку скриптов. Возражение у меня не к самим 95 баллам, а к приоритету: когда ради последних двадцати баллов снимают чат, отключают отзывы и упрощают карточку, потери в заявках перекрывают выигрыш в скорости. Дошли до 95 без таких жертв — отлично, это лучший вариант.

Анжела Волошина

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

Данила Виноградов

Вопрос про версию PHP. У нас стоит старая, потому что на новой отваливается один нужный плагин. Есть смысл менять хостинг или проще жить как есть?

Раиса Верещагина

Посмотрела вкладку сети, как советуете. В верхних строчках оказались два пикселя от рекламных кампаний, которые мы выключили ещё позапрошлой осенью. Никто про них не помнил.

Леонид Вихрев

Подскажите, шрифты действительно так важны? У нас подключено три семейства по четыре начертания, дизайнер настаивает, что менять нельзя.

Тамара Ваулина

У нас интернет-магазин, главная летает, а карточки товаров грузятся по три секунды. Никогда не проверяла их отдельно, всегда смотрела только главную.

Максим Вдовин

Правка не отображалась, переделал три раза, психанул, а оказалось — кэш. Полдня потерял. Стоило прочитать этот абзац раньше.

Инга Власенко

Есть ли смысл в сети доставки содержимого, если весь трафик из одного города, а сервер в другом конце страны? Или проще перевезти сайт поближе?

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

 Нажимая «оставить комментарий» вы принимаетеправила конфиденциальности 

Прокрутить вверх