Настройка кэширования и сжатия статических файлов в Nginx
Как ускорить загрузку сайта и снизить нагрузку на сервер.
Правильная настройка кэширования и сжатия статических файлов (изображения, CSS, JavaScript) позволяет значительно ускорить загрузку страниц, уменьшить потребление трафика и снизить нагрузку на сервер.
В этой статье мы разберём два важных механизма Nginx:
- Директиву expires (управление временем кэширования в браузере)
- Включение GZIP-сжатия для текстовых файлов
1. Настройка кэширования с помощью expires
Директива expires указывает браузеру, сколько времени файл можно хранить в кэше без повторного запроса к серверу.
Откройте конфигурационный файл вашего сайта (обычно /etc/nginx/conf.d/vhost.conf или аналогичный) и добавьте блок location для статических файлов:
location ~* \.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot|mp4|webm|ogg|mp3|pdf|zip)$ {
expires 30d; # кэш на 30 дней
add_header Cache-Control "public";
access_log off; # отключаем логи для статики (экономия ресурсов)
}
Рекомендуемые значения expires:
- Изображения, шрифты, иконки:
30dили1y - CSS и JavaScript:
7d—30d(если часто меняются — меньше) - Файлы, которые почти не меняются:
1y
2. Включение GZIP-сжатия
GZIP значительно уменьшает размер текстовых файлов (HTML, CSS, JS, SVG и др.).
Добавьте следующие строки в блок server {} вашего виртуального хоста:
server {
...
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6; # уровень сжатия (1-9)
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types
text/plain
text/css
text/xml
text/javascript
application/javascript
application/json
application/xml
application/rss+xml
image/svg+xml;
}
3. Применение настроек для всех сайтов (шаблон)
Если вы хотите автоматически применять эти настройки ко всем виртуальным хостам, создайте файл шаблона:
sudo nano /usr/local/ispmgr/etc/server.templ
Добавьте в него:
location ~* \.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public";
access_log off;
}
После изменения шаблона перезапустите Nginx:
sudo systemctl restart nginx
Полезные советы
- После изменения конфигурации всегда проверяйте синтаксис:
sudo nginx -t - Для максимальной производительности комбинируйте
expiresс заголовкомCache-Control: public. - Не ставьте слишком большой
expires(больше года) на часто обновляемые файлы (CSS/JS), иначе пользователи долго не увидят изменения. - На VPS и выделенных серверах вы можете дополнительно настроить browser caching, FastCGI cache и proxy_cache для ещё большей оптимизации.
Помощь
Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!