vscode启动慢、索引卡顿主因是cache和state目录膨胀;可安全删除cache,state删除会重置ui状态但不丢配置;扩展缓存需手动清理.cache等子目录;命令行日志code --log trace可精准定位问题。

VSCode 启动慢、文件索引卡住,大概率是 Cache 和 State 目录膨胀了
VSCode 自身不提供“清理缓存”按钮,但它的缓存机制(尤其是 Cache、State、Extensions 下的临时数据)会随使用时间持续增长。常见表现:打开大项目时 CPU 占用飙高、搜索/跳转变慢、Ctrl+P 延迟明显、甚至出现 Unable to resolve workspace file 类错误。这不是内存不足或插件冲突的锅,而是本地缓存文件损坏或体积失控。
关键路径在用户数据目录下(不同系统位置不同):
- Windows:
%APPDATA%\Code\Cache、%APPDATA%\Code\State - macOS:
~/Library/Application Support/Code/Cache、~/Library/Application Support/Code/State - Linux:
~/.config/Code/Cache、~/.config/Code/State
直接删 Cache 安全;State 存着窗口布局、最近打开文件、折叠状态等,删了会重置 UI 状态,但不会丢代码或配置。
别碰 Extensions 目录,但可以精准清空扩展的缓存子目录
很多卡顿实际来自扩展自身生成的缓存(比如 ESLint 的 .eslintcache、Prettier 的格式化中间文件、Python 扩展的 __pycache__ 或语言服务器缓存)。这些文件通常藏在扩展安装目录的子路径里,手动找很麻烦。
更稳妥的做法是:先关掉 VSCode,再执行以下操作:
- 进入扩展目录(如 macOS:
~/Library/Application Support/Code/Extensions/) - 对每个扩展文件夹,检查是否存在
node_modules/.cache、dist/.cache、out/.cache或根目录下的.eslintcache、.prettiercache等 - 只删这些明确带
cache字样的目录或文件,保留package.json和主逻辑文件
注意:Extensions 根目录本身不能删,否则所有插件丢失;也别用 rm -rf node_modules 全删——有些扩展靠它运行。
Developer: Toggle Developer Tools 里看不到缓存问题,得看终端日志
VSCode 内置开发者工具(Ctrl+Shift+I)主要查渲染层问题,对磁盘 I/O 或缓存加载失败无能为力。真正有用的线索藏在启动日志里。
用命令行启动 VSCode 并开启详细日志:
code --log trace --prof-startup
然后观察输出中反复出现的关键词:
-
Failed to read from cache→ 缓存文件损坏 -
Scanning large folder+ 耗时 >5000ms →State中工作区元数据过大 -
Extension host terminated unexpectedly→ 很可能是某个扩展的缓存触发了 Node.js 内存限制
这类日志比弹窗报错更早、更准。只要看到某扩展名(如 esbenp.vscode-eslint)高频出现在错误堆栈前几行,就优先去清它的缓存子目录。
一键脚本不是万能的,State 清理后要重新信任文件夹
有人写 shell/PowerShell 脚本自动删 Cache 和 State,这能省事,但有个硬伤:VSCode 1.84+ 引入了“文件夹信任”机制,State 里存着每个文件夹的 trusted 标记。一旦清空 State,再次打开项目时会强制弹出信任确认框,且部分功能(如调试、任务运行)默认禁用。
所以建议分两步操作:
- 日常维护:只删
Cache+ 扩展内缓存子目录(零副作用) - 彻底重置:删
Cache+State,但删完首次启动后,主动点击右下角的Trust Folder按钮,并勾选“记住此选择”
另外,State 下的 workspaceStorage 是按工作区哈希命名的文件夹,里面存着该工作区专属的扩展状态。如果只想解决某个项目卡顿,只删对应哈希目录即可,不用动整个 State。









