Как ускорить сайт на VPS: кэш, gzip, CDN
Медленный сайт теряет посетителей и позиции в поиске. Хорошая новость: на собственном VPS вы управляете всем стеком и можете выжать максимум. Разберём кэширование, сжатие, HTTP/2 и CDN — с конфигами, которые можно копировать.
Содержание
С чего начать: измеряем, а не гадаем
['Прежде чем что-то оптимизировать, замерьте текущую скорость. Простейший способ —curl с выводом таймингов.', 'curl -o /dev/null -s -w "connect: %{time_connect}s\\nttfb: %{time_starttransfer}s\\ntotal: %{time_total}s\\n" https://ваш-домен.ru/', 'TTFB (time to first byte) выше 400 мс — сигнал, что тормозит backend или диск. На тарифах MAATRIX стоят AMD EPYC + NVMe, поэтому дисковый I/O почти никогда не становится узким местом, и разница видна сразу после переезда с медленного диска.']
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать быстрый VPS для сайтаСжатие: gzip и brotli
['Текстовые ответы (HTML, CSS, JS, JSON) сжимаются в 3-5 раз. В nginx включаем gzip в/etc/nginx/nginx.conf внутри блока http:', 'gzip on;\ngzip_comp_level 5;\ngzip_min_length 256;\ngzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;\ngzip_vary on;', 'Brotli сжимает ещё плотнее. Ставим модуль и включаем параллельно gzip:', 'apt install libnginx-mod-http-brotli-filter libnginx-mod-http-brotli-static -y', 'brotli on;\nbrotli_comp_level 5;\nbrotli_types text/plain text/css application/json application/javascript image/svg+xml;', 'Проверяем, что сжатие работает:', 'curl -H "Accept-Encoding: gzip" -I https://ваш-домен.ru/ | grep -i content-encoding']
HTTP/2 и keepalive
['HTTP/2 мультиплексирует запросы в одном соединении — критично для сайтов с десятками ресурсов. Включается одним словом в директиве listen:', 'listen 443 ssl http2;', 'Держим соединения открытыми, чтобы не тратить время на новый TLS-хендшейк:', 'keepalive_timeout 65;\nkeepalive_requests 1000;', 'После правок обязательно проверяем синтаксис и перечитываем конфиг без обрыва соединений:', 'nginx -t && systemctl reload nginx']
Кэш статики и микрокэш страниц
['Браузерный кэш снимает нагрузку на повторных заходах. Для статики выставляем длинный срок жизни:', 'location ~* \\.(css|js|jpg|jpeg|png|gif|ico|woff2|svg)$ {\n expires 30d;\n add_header Cache-Control "public, immutable";\n}', 'Для динамики (WordPress, интернет-магазин) помогает микрокэш на 1-10 секунд — он гасит пики трафика, почти не отдавая устаревшего контента:', 'fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=micro:10m max_size=500m inactive=10m;\nfastcgi_cache micro;\nfastcgi_cache_valid 200 5s;\nfastcgi_cache_use_stale error timeout updating;']
OPcache для PHP и CDN для статики
['Если сайт на PHP (WordPress, Joomla, OpenCart), включите OPcache — он кэширует скомпилированный байткод и ускоряет отклик в разы. В/etc/php/8.2/fpm/conf.d/10-opcache.ini:', 'opcache.enable=1\nopcache.memory_consumption=256\nopcache.max_accelerated_files=20000\nopcache.validate_timestamps=1\nopcache.revalidate_freq=2', 'systemctl restart php8.2-fpm', 'CDN раздаёт статику с ближайшего к пользователю узла. Достаточно вынести картинки и скрипты на поддомен и направить его через Cloudflare или BunnyCDN. Сам сайт при этом остаётся на вашем VPS — CDN лишь берёт на себя раздачу тяжёлых файлов.', '- Итог: сжатие + HTTP/2 + кэш дают ускорение в 2-4 раза без смены кода.
- Быстрый диск на MAATRIX убирает главный тормоз — ожидание чтения с диска на старте PHP.
Частые ошибки и проверка результата
['Первая типовая ошибка — забыть перечитать конфиг nginx после правок. Директивы не применяются, пока вы не выполнили reload, а сама проверка синтаксиса ничего не активирует. Возьмите за правило: любая правка заканчивается связкойnginx -t и systemctl reload nginx.', 'Вторая ошибка — кэшировать динамические страницы вместе с корзиной и личным кабинетом. Микрокэш и fastcgi_cache применяйте только к анонимным GET-запросам, а всё, что зависит от пользователя, исключайте по cookie.', 'Третья ошибка — сжимать уже сжатое. Не добавляйте в gzip_types форматы вроде jpg, png или woff2: они уже упакованы, и повторное сжатие только тратит процессор без выигрыша.', 'После всех настроек повторно замерьте TTFB тем же curl-запросом, что и в начале, и сравните заголовки ответа — должны появиться Content-Encoding, Cache-Control и HTTP/2. Если TTFB упрямо высокий даже с кэшем, узкое место в backend или в медленном диске — здесь и помогает переезд на NVMe-план MAATRIX, где чтение файлов перестаёт тормозить старт PHP.']
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать быстрый VPS для сайтаЧастые вопросы
Что важнее: gzip или CDN?
Начните со сжатия и кэша — это бесплатно и делается за 10 минут. CDN добавляйте, когда аудитория географически разбросана или много тяжёлой статики.
Не сломает ли микрокэш корзину магазина?
Нет, если исключить из кэша страницы с корзиной и личным кабинетом через условие по cookie. Кэшируем только анонимные GET-запросы.
Поможет ли переезд на быстрый VPS?
Да, если сейчас диск HDD или перегруженный shared-хостинг. NVMe у MAATRIX снижает TTFB особенно на PHP-сайтах, где много обращений к файлам.