nginx缓存策略需分层配置:静态资源设immutable+max-age=31536000;html设no-cache或max-age=0强制校验;api接口默认no-store禁用缓存;配完须用开发者工具或curl验证响应头。

直接用 Nginx 控制浏览器怎么缓存,是最高效、最可控的加速方式。核心不是“加缓存”,而是按资源特性分层决策:哪些该长期存、哪些必须每次校验、哪些根本不能缓。
静态资源:用 immutable + 长期 max-age
对带哈希或版本号的 CSS/JS/图片/字体(如 app.a1b2c3.js、logo.4f5e6d.png),内容实质不变,适合永久缓存:
- 在 location 块中匹配扩展名:
location ~* \.(js|css|png|jpg|gif|woff2|svg)$ - 设置
Cache-Control: public, immutable, max-age=31536000(1年) - 配合
expires 1y,自动补全 Expires 头 - 确保文件名含哈希——这是 immutable 安全生效的前提
HTML 页面:禁用强缓存,强制校验
HTML 通常动态生成,内容易变。浏览器不该直接复用旧版,而应每次发起请求,由服务器决定是否返回新内容:
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
- 匹配 HTML 请求:
location ~* \.html$或更通用的location = / - 设
Cache-Control: no-cache, must-revalidate或private, max-age=0 - 也可用
expires epoch,即立即过期,触发条件式重新验证 - 避免设
max-age=300这类短时间——仍可能跳过服务器,导致用户看不到最新结构
API 与 JSON 接口:默认不缓存
接口数据实时性要求高,多数场景下不应由浏览器缓存:
- 对
/api/或*.json路径,显式关闭缓存:add_header Cache-Control "no-store" -
no-store比no-cache更严格:禁止写入磁盘,连临时缓存都不允许 - 若个别接口支持弱缓存(如天气预报每10分钟更新),可设
max-age=600, stale-while-revalidate=30 - 始终检查后端是否已自带 Cache-Control —— Nginx 的 add_header 是追加,不是覆盖
缓存键与调试:确认策略真实生效
配完不验证,等于没配。关键动作有三步:
- 重启 Nginx:
sudo nginx -t && sudo systemctl reload nginx - 用浏览器开发者工具(F12 → Network → 刷新页面 → 点击资源),查看 Response Headers 中的 Cache-Control 和 Expires
- 留意 X-Cache-Status(若启用了 proxy_cache)或 Age 头,判断是否真走缓存路径
- 用 curl 快速验证:
curl -I https://yoursite.com/style.css,直接看响应头










