Chrome清除缓存后仍加载旧CSS/JS,因存在内存、磁盘、Service Worker、V8字节码及Local Overrides五级缓存;需依次硬性重载+禁用缓存、清除全部浏览数据、注销Service Worker、禁用V8缓存、关闭或删除Overrides覆盖文件,并验证服务器响应头与HTML引用路径。

谷歌浏览器清除缓存后仍加载旧版CSS和JS脚本,是因为Chrome对静态资源采用多级缓存机制——除常规HTTP缓存外,还存在内存缓存、磁盘缓存、Service Worker缓存、本地覆盖(Overrides)残留以及脚本预编译缓存,任意一级未清理或被绕过,都会导致修改不生效。
确认是否真在加载旧文件
打开开发者工具(F12)→切换到Network选项卡→刷新页面→在筛选栏输入“.css”或“.js”→点击对应资源→查看右侧Headers标签页中的“Response Headers”→找到【Cache-Control】和【ETag】字段;若ETag值与上次一致,或Cache-Control中max-age远大于0,说明服务端仍在返回可缓存响应,浏览器可能复用旧副本。
右键该资源→选择“Open in Sources tab”→观察文件顶部是否显示“from ServiceWorker”或“from disk cache”字样;若显示“from Overrides”,说明你此前启用过Local Overrides但未关闭,当前实际运行的是本地覆盖版本而非服务器最新版。
彻底清除四层缓存源
第一步:硬性重载并禁用内存缓存
在问题页面按Ctrl + Shift + R(Windows/Linux)或Cmd + Shift + R(Mac),同时确保DevTools保持打开状态→Network面板中勾选“Disable cache”→再刷新一次。这会跳过内存缓存并强制发起无缓存请求。
立即学习“前端免费学习笔记(深入)”;
第二步:清除磁盘缓存与托管数据
访问chrome://settings/clearBrowserData→时间范围选“所有时间”→勾选“缓存的图片和文件”+“Cookie及其他网站数据”+“托管应用数据”→点击“清除数据”。【必须关闭所有Chrome窗口后再重启,否则部分缓存进程仍驻留内存】
第三步:终止Service Worker并注销
打开chrome://serviceworker-internals/→找到当前网站对应的Service Worker→点击“Unregister”→再点击右上角“Stop”按钮终止所有活跃实例。若网站使用Workbox等框架,还需检查其生成的sw.js是否被自动更新策略锁定。
第四步:清空V8脚本字节码缓存
地址栏输入chrome://flags/#enable-v8-cache-options→将“V8 bytecode cache”设为“Disabled”→重启浏览器。此操作禁用V8对JS函数的预编译缓存,避免旧字节码被复用执行。
排查Local Overrides干扰
方法一:快速关闭覆盖功能
打开DevTools→Sources面板→左侧边栏找Overrides选项卡(若不可见,点“>>”展开)→取消勾选“Enable local overrides”。此时即使你之前保存过修改,浏览器也会立即回退到原始远程资源。
方法二:手动删除覆盖文件夹
回到Overrides面板→点击“Folder configured”旁的文件夹图标→打开系统中你当初指定的覆盖目录→删除其中与当前网站域名同名的子文件夹(如example.com)→返回浏览器刷新。这一步能清除所有未被界面显式管理的残留覆盖文件。
注意:如果覆盖目录里有多个嵌套层级(如/example.com/assets/js/main.js),务必整棵树删干净,否则Chrome仍会优先读取最内层的旧文件。
验证修改是否真正上线
打开Network面板→刷新页面→找到目标CSS或JS文件→右键→“Save as”将其另存为本地文件→用文本编辑器打开比对内容。若内容仍是旧逻辑,说明问题不在浏览器端,而是服务器未部署新版本、CDN节点未刷新、或HTML中引用路径仍指向带?v=旧版本号的URL。
在Elements面板中右键任意元素→“Edit as HTML”→搜索或<script>标签→确认href/src属性值是否含缓存参数(如?v=1.0.2);若有,需同步更新该参数值或移除,否则浏览器会永远认它为独立资源并沿用旧缓存。</script>



















