Почему сайт медленно загружается и что с этим делать
2 июля 2021

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

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

Если ваш сайт создан с использованием HTML, CSS, JavaScript, PHP (или любого другого бэкенд-языка) — наши рекомендации наверняка окажутся полезными. 

Проблемы с нагрузкой и ресурсами на хостинге

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

Как проверить, сколько ресурсов потребляет сайт

Посмотрите статистику потребления ресурсов в панели управления хостингом. Если панель не показывает эти данные, запросите их у вашего хостера. 

В панели управления хостингом RU-CENTER потребление ресурсов можно посмотреть в разделе «Статистика». Обратите внимание, сколько оперативной памяти и процессорного времени сайт потреблял за последние дни, неделю, месяц. 

Вот как выглядит превышение ресурсов на графиках в панели управления хостингом RU-CENTER:

Потребление памяти в норме, потребление процессорного времени выросло

Потребление памяти и нагрузка на CPU (центральный процессор) выросли

Потребление памяти высокое, CPU в норме, но есть пик потребления

Также можно проверить логи доступа к сайту и посмотреть запросы за период высокого потребления ресурсов. 

Чаще всего потребление ресурсов растет из-за следующих причин:

  • Увеличилась посещаемость сайта.
  • Боты ведут вредоносную активность на сайте.
  • Есть проблемы в работе скриптов.

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

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

Проблемы с оптимизацией CSS и JavaScript

Когда пользователь переходит на сайт, браузер начинает собирать (рендерить) страницу, чтобы отобразить все ее элементы в окне браузера. 

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

Неправильно подключенные и настроенные файлы JavaScript и CSS могут замедлить рендеринг. Ведь браузер пытается сначала подгрузить скрипт, иначе содержимое страницы просто не отобразится. 

Начните анализировать сайт с помощью инструмента PageSpeed Insights. Сервис изучит ваш ресурс, подскажет, что надо исправить и как изменения ускорят работу сайта. 

Что делать, если замедляется рендеринг страницы

  1. Настроить отложенную загрузку JavaScript. Пусть самые большие JS-файлы будут загружаться в самом конце и не тормозить отображение остального контента. Чтобы настроить отложенную загрузку, настройте вызов внешнего JS-файла перед тегом </body>.
  2. Использовать асинхронную загрузку скриптов. При синхронной загрузке страница часто отображается в браузере с задержками, так как браузер не отобразит страницу, пока не обработает CSS- и JS-файлы. Асинхронная загрузка дает браузеру возможность загрузить HTML-страницу, даже если он пока не обработал файлы js и css. 
  3. Разместить ссылки на CSS-файлы перед ссылками на Javascript-файлы. Так страница будет загружаться постепенно: заголовок, логотип, рубрики, верхние блоки и т. д. Если разместить CSS-файлы после ссылок на файлы со скриптами, браузер будет тормозить и стараться загрузить все элементы одновременно — через несколько секунд ожидания. 
  4. Удалить все неиспользуемые элементы кода: пустые строки и переносы строк, ненужные комментарии, лишние пробелы, символы табуляции. Это уменьшит объем файла, и браузер будет быстрее его загружать. 

Лучше хранить две версии файлов: вариант для разработки (где сохранены все комментарии и удобное форматирование) и минифицированный вариант для размещения на сайте. 

Не загружаются данные из внешних источников в браузере

В коде сайта могут быть ссылки на внешние источники. Например, иногда для экономии места на диске хостинга картинки и видео хранят на стороннем сервере (CDN). 

Но сторонний сервер может быть перегружен или неправильно настроен. Браузер попробует подключиться к нему, чтобы забрать файлы, но не сможет этого сделать или будет загружать данные очень медленно. 

Ссылки на внешние источники можно проверить через консоль браузера Google Chrome*:

  1. откройте нужный сайт в браузере и нажмите F12;
  2. откройте вкладку Network;
  3. вызовите меню правой кнопкой мыши; 
  4. включите столбцы URL и/или Domain;
  5. изучите контент, размещенный на вашем домене и на внешних ресурсах.

Не загружаются данные из внешних источников на сервере

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

Еще одна частая проблема — сайт обращается сам к себе. Например, на сайте с условным именем TEST.RU может встречаться код, при помощи которого разработчик хочет подключить еще один файл к скрипту на языке PHP:

require_once(“https://test.ru/somefile.txt”).

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

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

Не настроено кеширование

Кеш — это специальная область, где временно хранятся часто используемые данные. Например, кеш в браузере позволяет сохранять изображения, файлы CSS и JavaScript. Когда пользователь второй раз зайдет на тот же ресурс, браузеру не нужно будет загружать файлы снова, и сайт отобразится быстрее. 

Популярные виды кеширования 

  • Кеширование через подключение к системе СDN-сервиса — например, Cloudflare. Внешний сервер кеширует любые элементы, даже скрипты и стили. Это снизит потребление ресурсов хостинга, на котором располагается сайт. Но такой способ кеширования поможет, только если CDN-сервер работает стабильно. Иначе страницы сайта начнут загружаться еще медленнее. Про CDN и принципы его работы мы писали отдельную статью.
  • Кеширование запросов к базе данных — об этом мы подробно рассказываем в дальше в статье — в разделе «Проблемы со скриптами и базой данных». 
  • Кеширование в PHP — например, с помощью расширения OPcache. Это будет полезно для всех сайтов, использующих CMS. Расширение позволит ускорить выполнение скриптов, написанных на языке PHP, но это незначительно увеличит потребление оперативной памяти. На виртуальном хостинге RU-CENTER это расширение включено по умолчанию. 
  • Кеширование статических файлов в браузере. Вы можете указать период, в течение которого статические файлы будут храниться у пользователя в кеше браузера. Это делается в настройках веб-сервера в панели управления хостингом, в файле конфигурации веб-сервера или в файле .htaccess. 
  • Кеширование результатов генерации HTML-страниц на диске. Если все страницы вашего сайта генерируются скриптами сайта, но не обновляются каждую секунду, можно сохранять уже сгенерированные страницы в виде файлов. Затем эти страницы путем минимальных преобразований будут сразу же передаваться в браузер пользователя. 

Существует множество плагинов, чтобы настроить кеширование данных для сайтов на CMS. Например, WP Super Cache или W3 Total Cache. Перед установкой плагина лучше посоветоваться с веб-мастером — он подскажет, какой плагин лучше подойдет для вашего сайта.

Не используется сжатие данных

Сжатие данных — один из способов ускорить загрузку страницы. C помощью gzip веб-сервер сжимает стили, JavaScript-файлы и другие элементы сайта, и только потом отправляет в браузер пользователя.

GZIP-сжатие подключается на стороне веб-сервера: в панели управления, как на хостинге RU-CENTER, в конфигурационном файле веб-сервера или через файл .htaccess. Включить сжатие можно также в настройках CMS.

Если файлы небольшие, сжимать их не нужно. Это будет неэффективно и может вызывать дополнительные задержки при загрузке сайта.

Проблемы со скриптами и базой данных 

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

Оптимизация скриптов. На их выполнение должно уходить минимум оперативной памяти и времени. Вот несколько советов: 

  • Кешируйте данные, которые редко обновляются. Если для генерации страницы нужно выполнить запрос к БД, данные которой не обновляются каждые несколько минут, имеет смысл сохранять результаты запроса в файле. Если файл небольшой, получить готовый результат из файла проще, чем обратиться к БД. Можно кешировать результаты генерации HTML-кода, как описано выше.
  • Используйте актуальную версию PHP. Переход на новую версию PHP почти всегда повышает производительность сайта. К тому же с новым релизом закрываются уязвимости и появляются новые возможности, удобные для разработчиков. Но учтите, что смена версии PHP — это сложно, долго и часто требует доработки кода сайта. Но замена версии PHP оправдана, если другие способы повышения производительности не сработали. 

Оптимизация запросов к БД. Главные требования:

  • используйте индексы во всех запросах для выборки данных; 
  • старайтесь создавать запросы так, чтобы при их выполнении по минимуму использовались временные файлы и операции сортировки в файле (filesort);
  • минимально используйте временные файлы и операции filesort.

Чем быстрее сервер базы данных выполняет запросы, тем быстрее он получит необходимые данные, сформирует ответ клиенту и освободит память.

Все эти данные для каждого из запросов можно получить с помощью команды EXPLAIN в соответствии с документацией по MySQL.

Иногда медленные запросы появляются случайно, например, как результат мгновенной нагрузки на сервере. Но если ситуация повторяется системно, значит, проблема в неэффективных запросах. Для сайтов на WordPress проверить наличие медленных запросов к базе можно с помощью плагинов Query Monitor или Debug Bar

Очистка базы от неактуальных данных. Иногда сайт медленно работает из-за того, что БД хранит слишком много лишней информации. Например, неактивные учетные записи пользователей, созданные ботами и спам-комментарии.

Мы советуем периодически проверять базу данных, считать число записей в таблицах и удалять лишние и неактуальные. Для сайтов на WordPress для таких задач подойдет плагин WP-Sweep

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

Проблемы с медиаконтентом 

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

Как оптимизировать картинки 

  • Вручную перед загрузкой на сервер, например, с помощью утилиты Squash.
  • Подключить к сайту плагин-оптимизатор, который вдвое уменьшает размер изображений, почти не влияя на качество. Например: Image Optimizer, WP Compress, Optimus, Robin. 
  • Если скрипты вашего сайта добавляют на загружаемые картинки ваш логотип или какие-либо «водяные знаки», нужно убедиться, что они не добавляют эти элементы каждый раз заново. Достаточно сделать это единожды при первой загрузке изображения, а дальше хранить на сервере уже обработанную картинку.

Как оптимизировать видео 

  • Использовать специальные программы, которые уменьшают размер видео без ухудшения качества, например: Blazemp или HandBrake.
  • Конвертировать видео в совместимые с HTML5 форматы: MP4 или WebM. Для этого удобно использовать video.online-convert.com. 
  • Убирать звук на видео, если от этого не пострадает информативность. Если ваше видео уже без звука, не забудьте убрать данные об аудио. Это можно сделать в любом редакторе, например ffmpeg.org.

Почему большое количество рекламы на сайте — это плохо 

Каждый поп-ап, автоматически воспроизводимый ролик или межстраничные объявления создают дополнительный HTTP-запрос. На их обработку тратится время, сайт работает медленнее. 

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

Проблемы с интернетом-провайдером или сетью

Возможно, с вашим сайтом все в порядке, а скорость загрузки упала из-за проблем в сети. 

Как понять, что есть сложности с работой сети

Данные от устройства посетителя сайта до сервера и обратно могут проходить через десятки промежуточных узлов. Причем иногда разные фрагменты данных (разные пакеты) могут ходить от одной точки в другую разными путями. Иногда те или иные узлы сети могут работать неверно и с задержкой передавать пакеты следующему узлу или не передавать их вовсе. Например, из-за работы фильтрующего ПО или оборудования. 

Какие могут быть проблемы в работе сети: 

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

Проведите диагностику сетевых соединений с помощью утилит WinMTR или tracert (traceroute) и отправьте отчет в техподдержку вашего хостинг-провайдера. В ряде случаев такой тест может показать, есть ли проблемы с сетью между вашим устройством и сервером. 

На сайте вредоносный код

Вредоносные программы устанавливают удаленные подключения к сторонним серверам, запускают ресурсоемкие процессы и перегружают сервер. Из-за этого ему не хватает ресурсов на выполнение важных процессов (например, на выполнение скриптов). Ранее мы подробно рассказывали, какие бывают вирусы, как они чаще всего попадают на сайт и что будет, если вовремя их не отследить.

Проверить сайт на наличие вредоносных программ можно с помощью Антивируса RU-CENTER. Он подготовит отчет со списком подозрительных и зараженных файлов и выгрузит его в панели управления антивирусом. Вы сможете устранить угрозы автоматически или вручную, изучив каждый файл. 

Боты

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

Запросы ботов увеличивают нагрузку на сервер и могут замедлять работу сайта. Чтобы исключить эту проблему, проверьте логи доступа к сайту на наличие большого числа обращений от ботов. Самые популярные боты — mj12, semrush, ahrefs. Их активность можно ограничить, например, запретив доступ к сайту. Это можно сделать через файл .htaccess на хостинге, добавив код:

RewriteCond %{HTTP_USER_AGENT} ahrefs [NC,OR]

RewriteCond %{HTTP_USER_AGENT} semrush [NC,OR]

RewriteCond %{HTTP_USER_AGENT} mj12 [NC]

RewriteRule .* - [F,L]

Также для борьбы с ботами будет полезен Антивирус RU-CENTER. Он поддерживает WAF (Web Application Firewall), который сканирует трафик и блокирует запросы ботов. WAF работает на большинстве популярных CMS — подробнее о нем мы рассказали в статье об Антивирусе.

Чек-лист: что проверить, если сайт медленно загружается

  1. Проверьте, сколько ресурсов на хостинге потребляет сайт и не превышаются ли тарифные лимиты. Если тарифные лимиты превышены, проверьте логи доступа к сайту и посмотрите запросы. Увеличилась посещаемость сайта — нужен новый тариф. Проблема в атаке ботов или работе скриптов — ищите рекомендации в этой статье. 
  2. Проверьте, правильно ли подключены файлы JavaScript и CSS. 
  3. Проверьте скорость загрузки данных из внешних источников.
  4. Настройте кеширование данных сайта. Пункты 4–9 мы советуем выполнить, даже если у сайта нет проблем со скоростью. 
  5. Настройте сжатие данных сайта с помощью gzip. 
  6. Оптимизируйте скрипты и запросы к базе данных. Очистите базу данных от неактуальной информации. 
  7. Оптимизируйте картинки, видео и рекламу на сайте. 
  8. Проверьте, нет ли проблем в работе сети.
  9. Проверьте сайт на наличие вирусов и большого количества обращений от ботов.


*Информация в статье не является рекламой и представлена в ознакомительных целях.

Рекомендуем