Перейти к содержимому

Оптимизация производительности сайта

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

Далее — системный подход к оптимизации по всем направлениям.

Перед запуском сайта зафиксируйте минимальный набор performance-практик:

  1. Базовое кэширование на уровне приложения и сервера.
  2. Оптимизация изображений и статики.
  3. CDN и корректная стратегия cache invalidation.
  4. Мониторинг ключевых метрик после релиза.

Чек-лист производительности перед запуском

Заголовок раздела «Чек-лист производительности перед запуском»
  • Прогнаны smoke-тесты и базовые пользовательские сценарии.
  • Включены мониторинг и алерты по скорости и доступности.
  • Проверено кэширование и инвалидация статики после деплоя.
  • Подтверждены целевые метрики в Lighthouse/PageSpeed/WebPageTest.

На скорость сайта влияют:

  • Хостинг — тип и конфигурация сервера
  • Приложение — платформа, расширения, тема/шаблоны, настройки
  • Версии ПО — язык/рантайм, база данных, веб-сервер
  • Контент — количество и размер изображений, скриптов, стилей
  • Трафик — объём и характер нагрузки
  • География — расстояние от сервера до посетителей
  • Статика — вынос медиа в объектное хранилище или CDN освобождает сервер и ускоряет отдачу
Тип хостингаДоступные рычаги
SharedКэширование на уровне приложения, оптимизация изображений, CDN
ManagedОграниченный выбор расширений, встроенное кэширование
VPS / DedicatedПолный контроль: серверный кэш, рантайм, база данных, веб-сервер

На VPS/Dedicated к общим методам добавляются: серверный кэш и тонкая настройка ПО.

Требования к хостингу растут с типом проекта: коммерческим площадкам и высоконагруженным сервисам нужны больше памяти, быстрые диски (NVMe/SSD) и актуальный рантайм.

  • Количество и частота процессоров
  • Объём оперативной памяти
  • Тип диска (NVMe > SSD > HDD)
  • Канал связи

Хостинг-провайдеры предлагают более высокую производительность за более высокую цену.

Расстояние между сервером и посетителем влияет на latency. CDN решает эту проблему, размещая копии статических файлов в разных регионах.

  • Легитимный трафик (всплески посещений)
  • Brute-force атаки на формы входа
  • Хотлинкинг изображений с других сайтов
  • DoS/DDoS атаки

Выявление и блокировка вредного трафика — часть стратегии оптимизации.

Главный рычаг производительности динамического сайта — многоуровневое кэширование: от браузера и CDN до серверного и объектного кэша. Полная модель уровней — на странице Кэширование сайтов: виды и подходы.

Оптимизация на этапе загрузки:

  • Сжимайте до загрузки (TinyPNG, Squoosh)
  • Используйте правильный формат: WebP для фотографий, SVG для иконок

Автоматизация:

  • Настройте целевое качество пережатия изображений на уровне платформы
  • Подключите плагин/расширение для автоматического сжатия при загрузке

Вынос статического контента на отдельный домен или CDN:

  • CDN — Cloudflare, BunnyCDN, KeyCDN
  • Отдельный домен для статики — static.example.com
  • Объектное хранилище S3-совместимого типа для медиафайлов

Подробный обзор и сравнение CDN-сервисов — CDN и производительность — сервисы.

Включите сжатие текстовых ресурсов на веб-сервере:

# Apache: включение Gzip
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css application/javascript
AddOutputFilterByType DEFLATE application/json application/xml
</IfModule>
# Nginx: включение Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 256;
  • Движок таблиц — используйте современный транзакционный движок с поддержкой внешних ключей и откатов (например, InnoDB в MySQL/MariaDB), а не устаревший нетранзакционный.
  • Очистка мусора — регулярно удаляйте ревизии контента, спам-комментарии и просроченные временные записи.
  • Autoload — небольшие «горячие» данные можно грузить при каждом запросе, но контролируйте их объём: раздутая autoload-секция замедляет каждый запрос.

При высоких нагрузках компоненты разносятся по серверам:

  • База данных — отдельный сервер
  • Статика — CDN или отдельный домен (content offloading)
  • Балансировщик нагрузки — распределение трафика между несколькими веб-серверами
  • Репликация и шардирование БД — для роста объёма данных и нагрузки на чтение
КомпонентМетоды
Веб-серверАсинхронные MPM, worker_processes, keepalive, кэш-заголовки
РантаймOPcache и аналоги, свежая поддерживаемая версия языка
База данныхТюнинг буферов, slow query log, мониторинг медленных запросов
DNSВынос DNS на внешний сервис снижает нагрузку
ПочтаНе запускайте почтовый сервер на боевом веб-сервере — используйте внешний SMTP