1

Как повысить скорость загрузки сайта с помощью кеширования в Nginx

Настройка кеширования статического контента в Nginx

Когда сайт загружает изображения, CSS, JavaScript и шрифты, на эти файлы может приходиться до 80 % всего трафика. Именно поэтому в Nginx важно настроить кеширование, чтобы браузер пользователя не обращался к серверу за одним и тем же контентом снова и снова.

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2?|ttf|svg)$ {
    expires 30d;
    add_header Cache-Control "public, max-age=2592000";
}

Если файл меняется, пользователь может продолжать видеть устаревшую версию. Чтобы избежать этого, опытные разработчики добавляют в имя файла хэш или номер версии, например: style.v3.css.

В российских проектах часто делают проще: выносят изображения и другие тяжёлые файлы на отдельный поддомен, например static.site.ru, где включают долгосрочное кеширование.

Кеширование с proxy_cache в Nginx

Основную проблему часто создаёт динамический контент: карточки товаров, профили пользователей, статьи. В таких случаях помогает proxy_cache.

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:100m max_size=10g inactive=60m use_temp_path=off;
location / {
    proxy_pass http://backend;
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
    add_header X-Proxy-Cache $upstream_cache_status;
}

Не все данные подходят для кеширования. Страницы с личными данными пользователей (например, история заказов или корзина) не кешируют.