你要是也遇到过这种情况,我以为91网没变化,直到我发现缓存管理悄悄变了(这点太容易忽略)

很多人遇到网站看起来“没有更新”“没动过”,其实只是缓存在背后悄悄在作怪。最近我也碰到过类似情况——访问91网时以为页面没变,折腾半天才发现问题出在缓存管理上。把排查与解决的经验整理出来,方便你下一次遇到这种“明明更新了但看不到”的情况能快点搞定。
先说结论(省时间):在浏览器看到旧内容,先不要以为页面没更新。按下面步骤逐项排查:强制刷新 → 禁用浏览器缓存 → 检查响应头(Cache-Control / ETag) → 看是否有 Service Worker 或 CDN 缓存 → 若是站方问题联系站点管理员请求清缓存或使用版本号。
为什么会出现“看起来没变”的假象
- 浏览器缓存:浏览器会缓存静态资源(JS/CSS/图片),减少二次下载。
- CDN 缓存:站点使用内容分发网络时,CDN 边缘节点可能还缓存旧资源。
- 代理缓存:公司或运营商网络层的缓存也可能导致旧页面被返回。
- Service Worker:PWA 或离线机制通过 Service Worker 持久缓存资源,即便服务器已更新,客户端可能继续使用缓存版本。
- 缓存策略或版本化机制改变:站点后台有时微调 Cache-Control、ETag 策略,或改了缓存命名约定,结果我方客户端感受不到变化。
如何一步步排查(实操)
-
强制刷新
-
Windows/Linux:Ctrl + F5 或 Ctrl + Shift + R
-
macOS:Cmd + Shift + R 这是最简单第一步,常常能解决问题。
-
在开发者工具中禁用缓存
-
Chrome/Edge/Firefox:按 F12 打开 DevTools → Network 面板 → 勾选 “Disable cache” (注意:只有在 DevTools 打开时生效)。
-
再刷新页面看是否更新。
-
用 curl / 请求头检查服务器返回的缓存策略
-
在终端执行:curl -I https://91xxx/某资源
-
关注的响应头:Cache-Control、Expires、ETag、Last-Modified、Age
-
示例:
- Cache-Control: max-age=31536000, public 表示长期缓存(需要改版本号或清 CDN 才能更新)
- Cache-Control: no-cache / must-revalidate 表示每次都要验证
-
检查是否有 Service Worker 在拦截
-
在 DevTools → Application(或 Storage)→ Service Workers,查看是否有注册并控制该页面
-
如果有,暂时点击 Unregister 或在控制台运行: navigator.serviceWorker.getRegistrations().then(rs => rs.forEach(r => r.unregister()))
-
清除浏览器存储(必要时)
-
DevTools → Application → Clear storage → 勾选所有并点击 Clear site data
-
或直接清除浏览器缓存(设置 → 隐私与安全 → 清除浏览数据)
-
排查 CDN / 代理缓存
-
如果你有权限,登录 CDN 控制台执行缓存清除(purge / invalidation)
-
否则联系站方客服或管理员,请求清理 CDN 缓存
-
临时解决:访问带版本号的资源,如 /app.js?v=20260219
常见场景与应对
-
场景 A:页面更新但某些静态文件没更新 → 很可能是 CDN 缓存或长期 Cache-Control
-
应对:站方做版本化(文件名或查询参数)或手动清除 CDN 缓存
-
场景 B:页面结构变了但客户端仍显示旧内容 → 很可能被 Service Worker 控制
-
应对:在 DevTools 卸载 Service Worker 或提示用户刷新并清除缓存
-
场景 C:只在公司网络或手机网络出现旧内容 → 代理或运营商缓存问题
-
应对:换网络或使用 VPN,再或联系网络提供方
给网站管理员的建议(如果你是站方)
- 给静态资源增加明确的版本号或文件哈希(cache-busting)
- 对频繁更新的页面设置合理的 Cache-Control(例如短时间缓存 + 协商缓存)
- 在发布流程中加入 CDN 清理或自动失效机制
- 在引入 Service Worker 时设计好更新策略(skipWaiting + clients.claim 与合理的更新提示)
- 对外提供一个“强制刷新/清缓存”的用户提示页面(当重大更新时给用户明确步骤)
快速清单(操作步骤速查)
- 先尝试:Ctrl/Cmd + Shift + R
- DevTools 禁用缓存并刷新
- 检查响应头:curl -I 或 DevTools Network
- 查 Service Worker:DevTools → Application
- 清除站点数据或手动 unregister
- 若是 CDN,通知站方清理或使用版本号临时绕过