Кэширование
Для кэширования обычно используют redis, memcached либо просто файлы.
Про редис в вордпресс здесь: https://khodo.ru/ustanovka-redis-na-ubuntu-i-ego-rabota-s-wordpress/
Memcached я установил и для него тоже есть плагин в вордпресс, но у меня плагин не заработал, выдавал какую-то ошибку. Но, после удаления в процессах видно, что memcached работает. Может по-умолчанию какие-то функции выполняет.
Для кэширования в вордпресс я использую WP Rocket (платный) или WP Super Cache (бесплатный). В WP Rocket рекомендую включить:
- Во вкладке «Файлы»:
- Сжимать стили CSS
- Объединять CSS файлы
- Сжатие JavaScript файлов
- Объединять Javascript файлы
- Асинхронная загрузка JavaScript
- Во вкладке «Кэш»:
- Включить кэширование для мобильных устройств
- Во вкладке «Медиа»:
- Lazyload
- Включить для изображений
- Включить для видео
- 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 подождет выставленное количество секунд и сбросит соединение.