Оптимизация сервера

Количество просмотров 113
Сложность:

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

Обновление программного обеспечения

В первую очередь, нужно обновить все программы и скрипты до последней версии. Это банально, но эффективно. При переходе с php 5.4 на php 7.3 прирост в скорости будет существенный. Обновлять можно и нужно не только php, но и всё ПО, которое установлено на сервере: веб-сервер, базы данных, CMS/фреймворки, плагины, подключаемые скрипты и так далее.

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

HTTP/2

Большинство хостингов изначально используют устаревшую версию протокола HTTP/1.1. К сожалению, далеко не каждая административная панель виртуального хостинга позволяет выбрать в настройках переход работы веб-сервера на вторую версию HTTP. Хороший пример - beget.com, который легко позволяет выбрать не только версию HTTP, но и версию php.

В VDS переход на вторую версию делается в конфигурационных файлах веб-сервера.

В apache2.conf строка:

Protocols h2 h2c http/1.1

В nginx.conf строка:

listen 443 ssl http2

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

Сжатие файлов gzip

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

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

В VDS включение сжатия gzip также происходит в настройках веб-сервера.

В apache устанавливаем модуль mod_deflate и в apache2.conf прописываем

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE image/jpeg
AddOutputFilterByType DEFLATE image/png
AddOutputFilterByType DEFLATE image/gif

В nginx.conf прописываем:

gzip                on;
gzip_min_length     1000;
gzip_buffers        16 8k;
gzip_types          text/plain text/html text/css application/javascript image/x-icon image/jpeg image/png image/gif;
gzip_vary           on;

Проверить включение gzip можно, например, с помощью GTmetrix.

Кэширование статичных файлов

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

В виртуальном хостинге всё опять настраивается из административной панели. Но иногда настройку кэширования можно сделать на виртуальном хостинге просто указав в .htaccess:

<ifModule mod_expires.c>
 ExpiresActive On
 ExpiresByType text/plain "access plus 30 day"
 ExpiresByType text/html "access plus 30 day"
 ExpiresByType text/css "access plus 30 days"
 ExpiresByType application/javascript "access plus 30 days"
 ExpiresByType image/x-icon "access plus 30 days"
 ExpiresByType image/jpeg "access plus 30 days"
 ExpiresByType image/png "access plus 30 days"
 ExpiresByType image/gif "access plus 30 days"
</ifModule>

30 days - это период, на которой данные кэшируются. Например, Google Audits начинает ругаться, что скор кэширования слишком маленький, если он менее 30 дней.

Эти настройки будут работать только при использовании модуля mod_expires. На VDS его можно включить вручную. На виртуальном хостинге нужно надеяться на порядочность хостинг-провайдера, что такой модуль работает, либо на его ручное включение в настройках административной панели.

В nginx кэширование включается в конфигурационном файле так:

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|pdf|js)$ {
expires 30d;
}

Причём location может меняться. Например, если у вас отдельная папка со статичным контентом, то вместо перечисления типов файлов можно просто указать к ней путь.

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

Видеоверсия