Как ускорить загрузку сайта и оптимизировать его работу

Кэширование

Для кэширования обычно используют redis, memcached либо просто файлы.

Про редис в вордпресс здесь: https://khodo.ru/ustanovka-redis-na-ubuntu-i-ego-rabota-s-wordpress/

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

Для кэширования в вордпресс я использую WP Rocket (платный) или WP Super Cache (бесплатный). В WP Rocket рекомендую включить:

  1. Во вкладке «Файлы»:
    • Сжимать стили CSS
    • Объединять CSS файлы
    • Сжатие JavaScript файлов
    • Объединять Javascript файлы
    • Асинхронная загрузка JavaScript
  2. Во вкладке «Кэш»:
    • Включить кэширование для мобильных устройств
  3. Во вкладке «Медиа»:
    • Lazyload
      • Включить для изображений
      • Включить для видео

Cache-Control

https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/Cache-Control

Если Вы не часто изменяете файлы CSS, JS, картинки и тд., то можно смело выставлять значение в 3 суток или больше.

Cloudflare

В Cloudflare это ставится в Caching -> Configuration->Browser Cache TTL

Cloudflare

Cloudflare очень полезная штука, которая проксирует треть интернета.

Always Online

Включается в Caching -> Configuration->Always Online и может вытянуть страницу из кэша, если сервер недоступен.

Оптимизация nginx

https://www.dmosk.ru/instruktions.php?object=kak-optimizirovat-veb-server-nginx

vi /etc/nginx/nginx.conf

Пример настроенного nginx.conf:

worker_processes  auto;
worker_priority     -2;
...
events {
    worker_connections  2048;
    multi_accept on;
}
...
http {
    ...
    keepalive_timeout          45;
    reset_timedout_connection  on;
    client_body_timeout        35;
    send_timeout               30;
    ...
}

worker_processes, по умолчанию 1. Определяет количество рабочих процессов. Обычно, выставляют равному числу ядер, но в новых версиях его лучше устанавливать в auto.

worker_priority, по умолчанию 0. Задает приоритет рабочих процессов от -20 до 20 (отрицательное число означает более высокий приоритет). Ему стоит отдать чуть больший приоритет (-2). Это нужно для того, чтобы при сильной нагрузке на скриптовую часть сайта или DDoS атаке, nginx продолжал обрабатывать запросы и отдавать статику.

worker_connections, по умолчанию 512. Устанавливает максимальное количество соединений одного рабочего процесса, то есть nginx будет обрабатывать worker_processes * worker_connections, остальные запросы ставить в очередь. Следует выбирать значения от 1024 до 4096. В нашем примере — 2048.

multi_accept, по умолчанию off. Если включен, позволяет принимать максимально возможное количество соединений. Иначе, процесс nginx за один раз будет принимать только одно новое соединение.

keepalive_timeout, по умолчанию 75. Отвечает за максимальное время поддержания keepalive-соединения, в случае, если пользователь по нему ничего не запрашивает. Для современных систем, стоит выставить от 30 до 50. В нашем случае 45.

reset_timedout_connection, по умолчанию off. Если клиент перестал читать страницу, Nginx будет сбрасывать соединение с ним.

client_body_timeout, по умолчанию 60. Будет ждать выставленное количество секунд тело запроса от клиента, после чего сбросит соединение. Значение по умолчанию слишком высокое и мы его снизили до 35.

send_timeout, по умолчанию 60. Если клиент прекратит чтение ответа, Nginx подождет выставленное количество секунд и сбросит соединение.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии