1. 所有页面都设了强缓存,结果无法及时更新
我们曾遇到一个客户,设置了 HTML 页面的 Cache-Control: max-age=31536000
(缓存一年),结果每次修改内容都无法立即生效,客户以为网站“坏了”。
优化方式:
对 HTML 页面使用较短缓存,如
max-age=300
;启用版本号或文件指纹,如
style.css?v=20250610
;改版或发新内容后自动触发清理缓存。
2. API 接口被 CDN 缓存,数据错乱
很多企业用 CDN 缓存接口数据以提升响应速度,但未设置缓存键,导致不同用户请求共用一份缓存数据。
结果就是 A 用户登录后操作,B 用户刷新页面却看到 A 的信息,非常危险。
正确策略:
动态接口设置
Cache-Control: no-store
;用户级接口必须带身份标识控制缓存;
数据更新频繁的接口禁止使用 CDN 缓存。
3. 上传类接口和编辑操作未关闭缓存
有的网站文件上传失败或内容修改后页面未同步,核心问题是浏览器对接口请求进行了缓存。
例如编辑页面保存按钮点击后无反馈,刷新后才发现数据早已修改。
解决方案:
在前端请求 URL 添加时间戳,如
/api/save?_t=timestamp
;后端接口加上
Cache-Control: no-cache
;文件上传接口启用 POST 请求 + 关闭 CDN 缓存。
缓存是工具,不是“加速万能钥匙”
缓存必须分内容类型、访问场景做“差异化策略”。
否则,它可能成为你与用户之间的“墙”。
我们认为:
样式、脚本、图片可以大胆缓存;
页面、接口、操作类请求需要精准控制;
如果用户频繁说“怎么还没更新”,说明你该看看缓存设置了。