Как повысить скорость загрузки сайта с помощью кеширования в 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;
}
Не все данные подходят для кеширования. Страницы с личными данными пользователей (например, история заказов или корзина) не кешируют.