VS Code在Ubuntu中创建工作区缓存的原因、运行路径问题及禁用方法
VS Code在/run/user/<用户ID>/doc创建工作区缓存的原因、目的及禁用方法
一、缓存目录的由来
这个目录并非“随机数字”,而是当前用户的UID(用户ID),属于Linux系统systemd机制下的用户临时运行目录/run/user/<UID>。VS Code选择这里创建缓存的原因:
- 该目录基于
tmpfs内存挂载,读写速度远快于磁盘,适合存储高频访问的缓存数据; - 用户注销时系统会自动清理该目录下的文件,不会产生残留垃圾;
- 符合Linux桌面应用的临时文件存储规范。
二、缓存的核心目的
- 提升操作性能:将大文件、频繁修改的文件快照缓存到内存级目录,减少磁盘IO开销,加快文件打开、语法检查、代码格式化等操作的响应速度;
- 保护原文件:执行lint检查、调试预处理等操作时,使用缓存文件而非原文件,避免操作过程中意外修改或锁定原文件;
- 快速恢复工作状态:缓存工作区元数据、文件状态快照,让VS Code重启或切换窗口时能快速回到之前的工作场景。
三、运行文件读取缓存而非原路径的原因
这种情况大多是VS Code内置功能或扩展(比如Python扩展)的设计逻辑导致:
以Python扩展为例,运行代码时会先将当前文件同步到缓存目录,再执行缓存文件——目的是避免原文件被其他程序锁定、或在执行过程中被修改,导致运行异常。
四、VS Code 1.77.3(Ubuntu 18.04)禁用缓存的方法
⚠️ 禁用缓存可能导致大文件、复杂工作区的操作性能下降,请谨慎操作。
方法1:修改VS Code内置设置
打开设置界面(快捷键Ctrl+,),搜索并修改以下选项:
- 禁用文件系统缓存:将
files.simpleDialog.enable设为false; - 针对Python扩展:将
python.execution.autoReload设为false,同时将python.analysis.useLibraryCodeForTypes设为false,减少扩展对缓存的依赖。
方法2:通过启动参数禁用
修改VS Code的桌面启动快捷方式:
- 终端执行命令:
sudo nano /usr/share/applications/code.desktop - 找到
Exec=开头的行,在code后添加--disable-file-system-cache参数,修改后示例:Exec=/usr/share/code/code --disable-file-system-cache %F - 按
Ctrl+O保存,Ctrl+X退出,重启VS Code生效。
方法3:修改用户配置文件
在~/.config/Code/User/settings.json中添加以下配置:
{ "files.useExperimentalFileWatcher": false, "files.watcherExclude": { "**/run/user/*/doc/**": true }, "python.analysis.cacheFolder": "" }
保存后重启VS Code,该配置会让VS Code忽略缓存目录的文件监控,并清空Python扩展的缓存路径设置。
内容的提问来源于stack exchange,提问作者goldfinch
相关产品推荐
相关产品推荐

