前端“刷新没反应”90%是缓存问题,需同步清理浏览器(强制刷新+注销Service Worker)、构建工具(Vite/Webpack重启或清缓存目录)、VSCode(删除workspaceStorage及插件cache)和Live Server(重启服务或禁用HTTP缓存)。

前端项目在 VSCode 里“刷新没反应”“样式还是旧的”“热更新失效”,90% 不是代码问题,而是本地缓存没清干净——包括浏览器缓存、VSCode 自身缓存、构建工具(如 Vite/Webpack)的 dev server 缓存,三者混在一起,只按 F5 或 Ctrl+R 是白忙。
浏览器 DevTools 里禁用缓存还不够
很多人打开 DevTools → Network → 勾上 Disable cache,以为万事大吉。其实这只影响当前页面的网络请求,对以下情况完全无效:
- Service Worker 已注册并接管了页面,它会从自己的缓存里直接返回资源,绕过 Network 设置
- Vite/HMR 的模块缓存存在内存中,改了 CSS/JS 文件但没触发重载,因为模块图没更新
- 某些插件(如 Live Server)启动的是独立 HTTP 服务,它自己维护一份静态文件映射缓存
真正要起效,得组合操作:Ctrl+Shift+R(强制硬刷新)+ Ctrl+Shift+I 打开 DevTools → Application → Service Workers → 点击 Unregister + 勾选 Update on reload;再关掉所有相关 tab,重开。
Vite / Webpack dev server 缓存必须重启
Vite 启动后会在内存中构建模块依赖图,并缓存已解析的 .vue、.ts 文件内容;Webpack 的 watchOptions 也默认启用文件系统缓存。改了配置或依赖后不重启,dev server 会继续用旧缓存。
- Vite:改了
vite.config.ts或package.json中的依赖版本,必须Ctrl+C终止进程,再npm run dev重新启动 - Webpack:如果用了
cache: { type: 'filesystem' }(V5+ 默认开启),清缓存不是删 node_modules,而是删node_modules/.cache/webpack目录(或你配置的cache.buildDependencies指向的路径) - 注意:Vite 的
server.hmr.overlay设为false时,错误不会弹窗,容易误判为“没报错=没变化”,建议保持默认
VSCode 自身缓存干扰调试器和语言服务
前端调试(launch.json)跑不起来、断点灰色、IntelliSense 提示乱码,常因 VSCode 把项目路径、类型定义、TSConfig 解析结果缓存在 workspaceStorage 里,且不会随文件变更自动刷新。
- 先确认问题是否与 workspace 绑定:关闭所有窗口 → 删除对应工作区的子目录(路径如
~/.vscode/workspaceStorage/xxx-uuid),再用code .重新打开 - 如果用了 TypeScript,删掉项目根目录下的
.vscode/.tsbuildinfo(如有)和node_modules/typescript下的缓存目录(如lib/tsserver.js加载的__buildInfo) - 别碰
extensions目录本身,但可删掉里面带-cache后缀的插件子目录(如esbenp.prettier-vscode-12.0.0-cache),避免插件加载失败拖慢整个编辑器
Live Server 插件的缓存最隐蔽
Live Server 启动的是一个微型 Express 服务,默认不走 ETag 或 Last-Modified 校验,而是把文件内容读进内存后直接 res.send(),改了 HTML/JS/CSS 后它根本不知道要重读——除非你手动点插件右下角的 “Restart Server” 按钮,或关掉再开。
- 更稳妥的做法:在
settings.json里加这条,让它每次响应都强制不缓存:"liveServer.settings.AdvanceCustomBrowserCmdLine": "--disable-http-cache" - 或者干脆换用 Vite 内置的 dev server(
npm create vite@latest),它对 HMR 和缓存控制更透明、更可控 - 顺带一提:Live Server 不支持 HTTPS,如果项目里用了
location.protocol === 'https:'判断,本地调试会走错分支——这不是缓存问题,但常被误认为“刷新没生效”
缓存链路越长,清理点就越分散。前端开发里没有“一键清除所有缓存”的银弹,关键是要分清哪一层在作祟:浏览器层看 Network 和 Application,构建层看进程是否重启,VSCode 层看 workspaceStorage 和插件 cache 子目录。漏掉任何一层,都会让你对着“明明改了却没变”的页面发呆十分钟。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











