Ускорение работы сайта. Часть 2 Серверная оптимизация

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

Теперь поговорим о том, на что надо обратить внимание в первую очередь.

Хостинг

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

Можно обратиться в поддержку хостера и выяснить, что они могут предложить для ускорения сайта. Возможно это подключение веб-сервера NGINX для ускоренной отдачи статических файлов (JS, CSS, картинки), настройка файлового кеша, подключение акселераторов PHP, кеширование запросов к базе данных с помощью Redis. Иногда эти сервисы уже есть на сервере хостера, и вам просто необходимо узнать настройки для их подключения.

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

СУБД (сервер базы данных)

Здесь необходимо решить проблему низкой скорости работы программного кода и, соответственно, медленных ответов от БД. Как правило большую часть времени веб-приложение тратит на запросы к БД. Решение проблемы состоит из двух этапов: настройки СУБД (например, MySQL), а также оптимизации запросов и схемы данных.

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

Влияние CMS и программного кода

Владельцы сайтов часто пытаются разделить CMS на быстрые и медленные. Конечно, нагрузка на сервер зависит от кода, который входит в используемую CMS, однако, большинство популярных систем оптимизируются для максимальной скорости и серьезных проблем там быть не должно. Тем не менее, помимо основного кода CMS, сайты обычно содержат дополнительные модули (плагины), расширения и модификации от web-разработчиков. Вот этот код уже может замедлять скорость сайта.

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

Кэширование

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

Оптимизация TCP, TLS, HTTP/2

Настройка TCP сегодня требуется для больших проектов и серверов с подключением от 10G. Правильная настройка TLS (HTTPS) позволяет получить высокий уровень безопасности и максимально сократить время установления защищенного соединения. HTTP/2 (новая версия протокола HTTP) предназначена для ускорения загрузки сайтов за счет снижения влияния сетевых задержек на время загрузки страницы. По данным на 1 июня 2020 года, 46% из 10 млн. самых популярных интернет-сайтов поддерживают протокол HTTP/2.

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

Остались вопросы? Связаться с автором статьи можно через Telegram: @SolutionsStudio

22
Начать дискуссию