expires指令是nginx控制静态资源浏览器缓存最直接有效的方式,通过向响应头写入expires和cache-control字段,减少重复请求、降低服务器压力、提升页面加载速度;必须置于location块中,支持相对时间(如1h、7d、max)、绝对时间(如@15h)及禁用缓存(如-1s、off),需按资源类型差异化配置并配合add_header精确控制。

在 Nginx 中,expires 指令是控制静态资源浏览器缓存最直接有效的方式。它通过向响应头写入 Expires 和 Cache-Control 字段,告诉浏览器该资源可以缓存多久,从而减少重复请求、降低服务器压力、加快页面加载速度。
expires 指令的基本用法
expires 指令必须放在 location 块中(通常针对静态资源路径),支持相对时间和绝对时间两种写法:
-
相对时间:如
expires 1h;、expires 7d;、expires max;(等价于 2037 年末,常用于长期不变的资源) -
绝对时间:如
expires @15h;(当天 15:00 过期),较少使用,一般用于定时更新场景 - 也可禁用缓存:
expires -1s;(触发 no-cache 行为)或expires off;(不添加任何缓存头)
推荐的静态资源缓存策略
不同类型的静态资源应设置不同缓存时长,兼顾更新及时性与缓存效率:
在 Linux 上通过 Chrome 挂载/VNC 自动发布小红书长笔记。Agent 撰写标题和正文后执行 xhs_publish.sh --publish --submit,触发小红书发布。
-
CSS / JS / 图片等带版本号或哈希值的资源:可设为长期缓存,例如
expires 1y;。前提是文件名随内容变化(如app.a1b2c3.js),否则需配合缓存清除机制 -
HTML 文件:通常不建议用
expires缓存,或仅设为expires 0;或expires -1s;,确保每次都能获取最新版本 -
Favicon、字体等低频变动资源:可用
expires 1M;(1个月)或更长
配合 add_header 精确控制缓存行为
expires 会自动设置 Expires 和 Cache-Control: max-age=xxx,但若需额外控制(如禁止代理缓存、强制校验),可叠加 add_header:
-
add_header Cache-Control "public, immutable";(适用于指纹文件,表示不可变) -
add_header Cache-Control "no-store";(完全禁用缓存,适合敏感资源) - 注意:
add_header在同一作用域多次出现时会覆盖前值,建议集中配置
验证缓存是否生效
部署后可通过浏览器开发者工具的 Network 面板检查响应头:
- 查看
Cache-Control是否含max-age=... - 查看
Expires时间是否符合预期 - 刷新页面时,状态码为
304 Not Modified或直接显示from memory cache/from disk cache即表示缓存生效










