index.html不更新主因是浏览器长缓存或Service Worker拦截;应优先用开发者工具勾选Disable cache,或强制刷新Ctrl+F5/Cmd+Shift+R,再检查Network面板确认是否仍显示from disk cache。

HTML在线运行时代码不更新,基本就是浏览器缓存把旧的 index.html 或关联的 script.js、style.css 给“锁死”了。直接清缓存或绕过缓存就能解决,不需要重装浏览器或改服务器。
Ctrl+F5 强制刷新没用?先确认是否真生效
很多人按了 Ctrl+F5 还是看到旧效果,其实是因为:页面可能没真正重新请求 HTML 文件(比如用了 Service Worker),或者开发者工具没开着、Disable cache 没勾上。硬刷只对当前标签页起作用,且不保证跳过所有缓存层。
- 必须在目标页面焦点激活状态下按
Ctrl+F5(Windows)或Cmd+Shift+R(Mac) - 如果页面由
index.html重定向而来,要确保刷新的是最终 URL,不是中间跳转地址 - 某些在线平台(如 JSBin、CodePen)本身有预览缓存机制,硬刷只刷新 iframe 内容,需点“Run”或“Re-run”按钮
开发者工具里 Disable cache 必须常开
这是开发阶段最可靠的方式:Disable cache 会强制所有请求走网络,连 fetch()、XMLHttpRequest、import 都绕过缓存。但它只在开发者工具打开且 Network 标签激活时有效。
- 按
F12→ 切到Network标签 → 勾选Disable cache - 别关掉开发者工具窗口,最小化可以,关闭就失效
- 注意:这个设置不影响其他标签页,也不影响无痕窗口
URL 加 ?v= 参数是最稳的临时方案
如果你能改 HTML 中引用的资源路径,加查询参数是最直接的“欺骗”浏览器方式。浏览器认为 main.js?v=1.2 和 main.js?v=1.3 是两个不同文件,自然不会复用缓存。
立即学习“前端免费学习笔记(深入)”;
- 改
<script src="app.js"></script>为<script src="app.js?v=1.3"></script> - HTML 文件本身也能加,比如访问
index.html?v=20260826,但前提是服务器允许带参访问(静态托管通常支持) - 别用时间戳自动生成(如
v=1724680440),容易被构建工具或 CDN 当作新资源反复拉取
Service Worker 缓存比浏览器缓存更难清理
如果你的 HTML 页面注册了 Service Worker(比如用了 Workbox、Vite PWA 插件或手动调用了 navigator.serviceWorker.register()),它会接管请求并返回自己缓存的内容——这时候清浏览器缓存完全没用。
- 打开开发者工具 →
Application标签 → 左侧选Service Workers→ 点Unregister - 勾选
Update on reload,再刷新页面,让新版 SW 自动安装 - 如果控制台报错
Failed to load resource: net::ERR_FAILED,大概率是 SW 拦截失败,得进Cache Storage手动删掉对应缓存名
真正麻烦的从来不是怎么清,而是你不知道缓存藏在哪一层:HTTP 响应头、CDN、Service Worker、浏览器内存缓存、磁盘缓存……每次遇到“代码不更新”,先查 Network 面板里 HTML 文件的 Size 列——显示 from disk cache 或 from memory cache 就说明还没绕过去。



















