最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 中怎么通过配置实现静态资源请求过期处理
时间:2026-07-01 10:53:50 编辑:袖梨 来源:一聚教程网
Nginx 通过 Expires 和 Cache-Control 响应头控制静态资源缓存,需按资源类型精准配置:哈希文件设 expires 1y 并加 immutable;图片字体设 expires 30d;未版本化资源设 expires 1h~1d;HTML/API 设 expires epoch 并配 no-cache。
在 Nginx 中处理静态资源请求过期,本质是通过响应头控制浏览器是否复用本地缓存,而不是“让请求过期”。核心手段是设置 Expires 和 Cache-Control 响应头,且必须按资源类型区别配置,否则容易缓存 HTML 或接口数据导致内容 stale。
精准匹配静态资源路径
避免泛匹配干扰动态请求:
- 用
~*正则匹配后缀(忽略大小写),覆盖主流类型:location ~* .(js|css|png|jpg|jpeg|gif|ico|svg|woff2?|ttf|eot|webp)$ { ... } - 用
^~匹配固定静态目录(如/static/),性能更高、更安全:location ^~ /assets/ { ... } - 绝对不要写
location /或location ~ .html$里加expires,否则 HTML 页面可能被强缓存
按资源稳定性设合理过期时间
过期策略取决于文件是否带版本标识(如构建时生成的哈希名):
- 带哈希的 JS/CSS(如
app.a1b2c3.js):设为长期缓存,expires 1y;或expires max; - 图片、字体、SVG 等稳定资源:设
expires 30d;(约一个月) - 未做版本控制的通用资源(如
logo.png):建议expires 1h;~expires 1d;,降低更新延迟风险 - HTML、API 接口等动态内容:统一设
expires epoch;(立即过期),并配合add_header Cache-Control "no-cache, must-revalidate";
必须补全 Cache-Control 响应头
expires 指令只生成基础缓存头,现代浏览器更依赖 Cache-Control,且需语义明确:
- 对带哈希资源,加:
add_header Cache-Control "public, immutable, max-age=31536000";
其中immutable告诉浏览器该资源不会变更,可跳过条件请求(F5 也不验证) - 对普通图片,加:
add_header Cache-Control "public, max-age=2592000"; - 注意:
add_header同级多次声明会覆盖,务必合并成一条
验证配置是否生效
改完别跳过检查步骤:
- 先运行
nginx -t验证语法,再nginx -s reload重载 - 用
curl -I https://your.site/style.css查看响应头,确认同时存在Expires和Cache-Control - 若没生效,排查:是否 location 未命中、是否被
proxy_pass上游覆盖、静态文件是否真由 Nginx 直接提供(而非后端返回)
相关文章
- 如何查询圆通速递实时物流 07-10
- alphane-ai/guizang-ppt-skill-mod 本地安装:先分清 HTML deck、瑞士风校验和上游地址 07-10
- 微信注销账户有后悔期吗 07-10
- 终末地晶石如何获取 07-10
- 么么交友如何进行提钱 07-10
- LearnPrompt/humanize-ppt 使用教程:用 AST 改善演讲节奏 07-10