你要是也遇到过这种情况,我以为91官网没变化,直到我发现缓存管理悄悄变了(建议反复看)

有时候访问同一个网址,看到的内容忽然不对(旧图、旧样式、脚本不起作用),明明开发者说没动过页面,但你浏览器里显示的就是“老版本”。我也以为91官网没变化,结果排查一圈才发现:问题在缓存管理悄悄变了。把自己常遇到的症状、判断方法和一套可操作的修复流程整理在下面,建议反复看,留作排查清单。
一、先知道:缓存到底有哪些“玩家”
- 浏览器缓存(静态资源、HTML、图片、CSS、JS)
- Service Worker(离线缓存、比普通缓存更“固执”)
- CDN 缓存(靠近用户的节点会缓存资源)
- 服务器端缓存(缓存层、Cache Reverse Proxy)
- DNS 缓存(域名解析变更传播慢) 每一层缓存都有自己的生命周期和清理方式,问题往往出在不知情的那一层。
二、遇到问题先做三步快速排查(用户端优先) 1) 强制刷新(最省事)
- Windows: Ctrl + F5 / Ctrl + Shift + R
- macOS: Cmd + Shift + R 2) 隐身/无痕模式打开页面(排除扩展和持久缓存) 3) 不同设备/不同网络测试(手机数据网络 vs Wi‑Fi,或用朋友的电脑) 如果这些能看到正确内容,就说明问题主要在浏览器缓存或本地网络层面;若多个设备都不对,那可能在CDN或服务器端。
三、开发者工具与命令级排查(给想深入的人)
- Chrome DevTools: Network 面板勾选 “Disable cache”(仅在 DevTools 打开时生效),观察资源返回的状态码(200 vs 304)和响应头。
- 查看响应头:Cache-Control、Expires、ETag、Last-Modified、Age、Via 等。
- 检查 Service Worker:Application → Service Workers,选择更新或卸载。
- curl 快速查看头信息:curl -I https://example.com/path
- dig/nslookup 检查 DNS TTL 和解析是否一致。
四、针对不同层的解决办法(站长与普通用户都能用)
- 浏览器端用户操作:
- 清除浏览器缓存或浏览数据(包括缓存图像和文件)。
- 注销并重新登录(有时认证相关缓存会影响内容)。
- 注销 Service Worker:开发者工具 → Application → Service Workers → Unregister。
- CDN 层(站长/运维):
- 在 CDN 控制台执行 Purge(按 URL 或按缓存键批量清除)。
- 使用版本号(query string 或文件名变更)做缓存击穿(例如 style.v2.css)。
- 调整 CDN 缓存策略:对动态内容设置短 TTL,对静态内容用长 TTL 并配合版本管理。
- 服务器/应用层:
- 设置合理的 Cache-Control:对频繁变动的 HTML 用 no-cache 或 max-age=0, must-revalidate;静态资源用 immutable + long max-age,并通过文件名版本更新。
- 使用 ETag 或 Last-Modified 正确协助客户端缓存验证。
- 若使用反向代理(如 nginx、Varnish),检查看是否有不当缓存规则。
- DNS 层:
- 变更解析后等待 TTL 过期或降低 TTL 再做变更以加速生效。
- 检查本地 DNS 缓存(Windows: ipconfig /flushdns;macOS: sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder)。
五、防范与优化建议(给站点长期稳定性)
- 静态资源强烈建议文件名中带版本号(cache busting),比依赖 purge 更稳妥。
- 对敏感或个性化页面不要设置长缓存;用缓存验证机制(ETag)而不是无脑长期缓存。
- 定期检查并记录 CDN/代理的缓存规则与变更记录,避免无意识配置更改。
- 在发布重要更新时同步做 CDN 清理和通知团队:发布-清理-验证 三步走。
- 使用监测工具(例如 WebPageTest、Pingdom、自建脚本)定期检测真实用户看到的页面版本。
六、常见坑与解决思路(节省排查时间)
- 你能看到新内容,但别人看不到:通常是对方本地缓存或 CDN 边缘节点未刷新;建议对方强制刷新或等 TTL 到期。
- 清除缓存后样式崩塌:可能新资源路径未更新或版本冲突,回滚并检查构建发布管道。
- Service Worker 藏着旧资源:优先 unregister 或在新版本中更新 SW 的版本号和激活逻辑。
- 第三方资源缓存(字体、库文件)不同步:最好托管自己可控的副本或使用版本化 URL。
结语 遇到“网站没变但看到的东西变了”的情况,别慌,按层次排查,先从浏览器端试起,再看 CDN 和服务器配置。把上面的快速排查和修复步骤记下来,发布或修改资源时把 cache-busting 和清理流程列入发布清单里。这篇文章里提到的操作步骤,建议反复看,能帮你更快定位“到底是谁悄悄动了缓存”。