开发环境需禁用静态资源缓存,通过 nginx 配置 expires off、add_header cache-control "no-store, no-cache, must-revalidate, max-age=0" 和 add_header pragma "no-cache",精准匹配静态资源路径(如 location ~* .(js|css|png|jpg|gif|svg|woff2?|ttf|eot)$),并关闭 gzip_static、sendfile 等干扰项,确保响应头正确且资源始终从网络加载。

开发环境需要禁用静态资源缓存,避免浏览器加载旧版本 CSS、JS 或图片导致调试失真。核心是让 Nginx 明确返回不缓存的响应头,并绕过任何可能的中间缓存(如代理、CDN)。
明确关闭缓存控制头
在匹配静态资源的 location 块中,直接覆盖默认缓存行为:
- 用
expires off禁用Expires头生成 - 用
add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0"强制浏览器和代理不存储、不复用资源 - 额外加
add_header Pragma "no-cache"兼容 HTTP/1.0 代理
精准匹配静态资源路径或后缀
避免影响 API 或动态接口,只对实际静态文件生效:
- 推荐正则匹配:
location ~* \.(js|css|png|jpg|gif|svg|woff2?|ttf|eot)$ - 若静态资源集中放在
/static/目录下,可用前缀匹配:location ^~ /static/ - 注意:正则匹配优先级低于
^~,但高于通用/;确保这类 location 在 server 块中位置合理,不被更宽泛的规则覆盖
关闭无关优化,防止干扰
开发阶段无需压缩或预加载等增强行为:
- 禁用
gzip_static on(避免读取 .gz 文件造成版本错乱) - 禁用
sendfile on(某些系统下与缓存头组合可能异常,可设为off或保持默认,但需测试确认) - 关闭目录浏览:
autoindex off(非必须,但属安全习惯)
验证是否生效
配置保存后重载 Nginx(nginx -t && systemctl reload nginx),再通过浏览器开发者工具检查响应头:
- 确认响应中包含
Cache-Control: no-store, no-cache, must-revalidate, max-age=0 - 确认没有
Expires头,或其值为过去时间 - 刷新页面时,Network 面板中静态资源状态码应为
200(而非304),且 Size 显示“from network”











