Nginx 缓存控制配置的用途说明、详细介绍,以及更精细控制的写法
📌 作用:
1. 匹配静态资源:此规则匹配所有 .gif, .jpg, .jpeg, .png, .bmp, .swf 结尾的资源请求。
2. 设置强缓存:
• Cache-Control: public, max-age=31536000, immutable 表示这些资源可以被 浏览器和 CDN 缓存,最大缓存时间为 1 年(31,536,000 秒)。
• immutable 表示该资源不会被修改,浏览器即使刷新页面也不会重新请求,除非 URL 改变(如加版本号)。
3. 关闭日志:
• error_log /dev/null; 与 access_log /dev/null; 是为了减少这些静态资源的日志写入,降低磁盘 I/O 与日志体积。
🧩 精细时间控制写法:
如果你希望不同类型的文件使用不同缓存策略(如图片缓存一年、字体缓存半年、JS/CSS缓存1天),可以如下分开设置:
# 图片
location ~* \.(gif|jpg|jpeg|png|bmp|swf)$ {
add_header Cache-Control "public, max-age=31536000, immutable"; # 1 年
error_log /dev/null;
access_log /dev/null;
}
# 字体
location ~* \.(woff|woff2|ttf|otf|eot)$ {
add_header Cache-Control "public, max-age=31536000, immutable"; # 1 年
error_log /dev/null;
access_log /dev/null;
}
# 视频
location ~* \.(mp4|webm|ogv)$ {
add_header Cache-Control "public, max-age=31536000, immutable"; # 1年
error_log /dev/null;
access_log /dev/null;
}
# 音频
location ~* \.(mp3|ogg|wav)$ {
add_header Cache-Control "public, max-age=31536000, immutable"; # 1年
error_log /dev/null;
access_log /dev/null;
}
# CSS/JS
location ~* \.(css|js)$ {
add_header Cache-Control "public, max-age=31536000, immutable"; # 1 年
error_log /dev/null;
access_log /dev/null;
}
关于时间的写法案例:
# 图片缓存:1年
location ~* \.(png|jpg|jpeg|gif|ico|webp|bmp)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
# 字体缓存:半年
location ~* \.(woff|woff2|eot|ttf|otf)$ {
add_header Cache-Control "public, max-age=15768000, immutable"; # 6 个月
}
# JS 和 CSS 缓存:1 天
location ~* \.(js|css)$ {
add_header Cache-Control "public, max-age=86400"; # 1 天
}