
1. 先搞清楚 DXCache 到底是个什么角色1.1 从一次磁盘告警说起前阵子帮朋友收拾一台用了三年的游戏本1TB 的系统盘只剩不到 40GB 可用空间。用磁盘分析工具一扫C:\Users\你的用户名\AppData\Local\NVIDIA\DXCache这个文件夹赫然占了将近 18GB。朋友一脸懵地问我这玩意儿是病毒吗能删吗删了会不会把显卡驱动搞坏这个问题其实特别典型。只要你在 Windows 上用过 NVIDIA 显卡并且玩过几款 DirectX 12 的游戏这个文件夹几乎必然会膨胀起来。它不是什么垃圾软件留下的残骸也不是系统关键组件而是 NVIDIA 显卡驱动在运行 DirectX 程序时主动生成的一个着色器编译缓存目录。要理解它为什么存在得先明白现代游戏渲染的一个基本流程。GPU 执行渲染任务时需要运行一种叫“着色器”的小程序这些程序负责计算每个像素的颜色、光照、阴影、材质表现等等。着色器源码是高级语言写的GPU 不能直接执行必须先编译成 GPU 能读懂的机器码。这个编译过程如果每次启动游戏都重来一遍那加载时间会非常感人而且游戏过程中还容易出现卡顿。所以 NVIDIA 驱动做了一个很聪明的设计第一次编译完着色器之后把编译结果存到硬盘上下次再遇到同样的着色器直接读取缓存跳过编译。这个缓存就放在 DXCache 文件夹里。名字里的“DX”指的就是 DirectX。1.2 它和 GLCache、NV_Cache 的区别很多人搜索的时候会看到好几个类似名字的文件夹容易搞混。我在这里一次性说清楚文件夹名称服务对象典型位置能否删除DXCacheDirectX 9/10/11/12 程序%LOCALAPPDATA%\NVIDIA\DXCache可以会自动重建GLCacheOpenGL 程序%LOCALAPPDATA%\NVIDIA\GLCache可以会自动重建NV_Cache旧版驱动缓存%LOCALAPPDATA%\NVIDIA\NV_Cache可以部分版本已弃用ComputeCacheCUDA/计算任务%LOCALAPPDATA%\NVIDIA\ComputeCache可以会自动重建这几个文件夹的逻辑是一样的都是驱动为了加速而做的本地缓存。它们的共同特点是——删了不会导致硬件损坏也不会让驱动失效只是下次运行对应程序时需要重新编译一遍。1.3 为什么它会变得这么大一个着色器缓存动辄十几 GB听起来很夸张但拆开看就合理了。现代 3A 游戏的着色器变体数量极其庞大。同一个材质在不同的光照条件、不同的画质设置、不同的分辨率、不同的抗锯齿模式下可能需要不同的着色器变体。一款大型游戏编译出几万个着色器变体是家常便饭每个变体编译后的机器码从几 KB 到几百 KB 不等累积起来轻松上 GB。再加上如果你玩过很多款游戏或者同一款游戏反复切换画质设置缓存会不断累积。驱动本身对缓存大小有一定的管理策略但这个策略在不同版本里表现不一样有些版本清理得比较积极有些版本就放任它涨。所以你会看到有人 DXCache 只有几百 MB有人却超过 20GB这跟使用习惯和驱动版本都有关系。注意如果你用的是笔记本电脑并且系统盘是容量较小的 SSDDXCache 膨胀是导致 C 盘空间告急的常见原因之一值得定期关注。2. 删除 DXCache 到底会发生什么2.1 删除后的真实影响先给结论可以删删了不会坏但会有短期副作用。具体来说删除 DXCache 之后显卡驱动不会失效系统不会蓝屏硬件不会受损。下次启动游戏或 DirectX 程序时驱动会重新编译着色器这个过程会导致首次加载时间变长。游戏过程中可能出现短暂的卡顿因为着色器在实时编译。缓存文件夹会被重新创建并随着使用逐渐重新填充。我用一台 RTX 3070 的台式机做过实测。删除前 DXCache 约 12GB删除后第一次启动《赛博朋克 2077》加载时间从原来的约 25 秒增加到约 50 秒进入游戏后的前几分钟有轻微帧率波动之后恢复正常。第二次启动就恢复到 25 秒左右了。所以这个代价是一次性的不是永久性的。2.2 什么情况下适合删不是所有情况都值得删。我总结了几种适合清理的场景系统盘空间严重不足DXCache 占用超过 5GB且你急需释放空间。游戏出现异常的渲染错误比如贴图闪烁、着色器相关的崩溃清理缓存有时能解决。更新了显卡驱动之后旧缓存可能和新驱动不兼容清理一下更稳妥。长时间没清理过缓存里堆积了大量已经不再玩的游戏的着色器数据。反过来如果你磁盘空间充裕游戏运行也正常那就没必要折腾。缓存的存在本身就是为了让你体验更好频繁删除反而每次都要重新编译。2.3 什么情况下不建议删有几种情况我建议你忍一忍你正在玩一款对着色器编译特别敏感的游戏比如某些开放世界大作重新编译期间的卡顿体验很差。你的 CPU 性能较弱着色器编译主要靠 CPU重新编译的耗时会明显更长。你只是看到文件夹大就手痒实际上磁盘还有充足空间。提示删除前可以先记录一下文件夹大小删完对比一下释放了多少空间心里有数。3. 手把手教你安全清理 DXCache3.1 找到文件夹的正确姿势最直接的方法是在文件资源管理器地址栏输入%LOCALAPPDATA%\NVIDIA\DXCache回车就能直接跳转。%LOCALAPPDATA%是一个环境变量会自动展开成C:\Users\你的用户名\AppData\Local。这样你就不用去记具体的用户名路径了。如果你用的是 Windows 11AppData 文件夹默认是隐藏的直接浏览可能看不到。这时候要么用上面的环境变量方法要么在资源管理器里开启“显示隐藏的项目”。3.2 删除操作的具体步骤删除本身很简单但有几个细节要注意先关闭所有正在运行的游戏和 DirectX 程序。如果游戏还在运行缓存文件被占用删除会失败或者只删掉一部分。关闭 NVIDIA 相关的后台进程。可以在任务管理器里看看有没有NVIDIA Container之类的进程不过通常不关也能删。直接删除整个 DXCache 文件夹或者只删除里面的内容。我倾向于删除整个文件夹驱动下次会自动重建。如果提示文件被占用重启电脑后再删这是最稳妥的办法。如果你习惯用命令行可以用管理员权限打开 PowerShell执行Remove-Item -Path $env:LOCALAPPDATA\NVIDIA\DXCache -Recurse -Force这条命令会递归删除整个文件夹。执行前确保没有程序占用。3.3 用磁盘清理工具批量处理如果你不想手动找Windows 自带的磁盘清理工具其实也能帮上忙。在开始菜单搜索“磁盘清理”选择系统盘点击“清理系统文件”然后在列表里找找有没有 NVIDIA 相关的缓存项。不过实测下来磁盘清理工具对 DXCache 的识别并不总是准确有时候列不出来所以手动删还是最可靠的。另外有一些第三方的磁盘分析工具比如 WizTree、TreeSize可以快速定位大文件夹。WizTree 读取 NTFS 的 MFT 表扫描速度极快几秒钟就能把整个盘的文件大小排好序找 DXCache 这种大文件夹特别方便。3.4 删除后的验证删完之后你可以重新启动一款 DirectX 游戏然后回到 DXCache 路径看看会发现文件夹被重新创建了里面开始出现新的缓存文件。这就说明一切正常驱动在按预期工作。如果你删完之后发现文件夹没有重建也不用慌可能是你还没运行过需要它的程序。跑个游戏或者用 GPU 跑个 DirectX 应用它自然就回来了。4. 比删除更好的方案从根源上管理缓存4.1 修改缓存大小上限NVIDIA 驱动其实提供了一个隐藏的缓存大小控制选项只是没有做进图形界面需要通过 NVIDIA Profile Inspector 这个第三方工具来调整。这个工具可以读取和修改驱动的底层配置包括着色器缓存的最大容量。操作思路是下载 NVIDIA Profile Inspector找到全局配置或者特定游戏的配置搜索和 shader cache 相关的选项把默认值改成一个合理的上限比如 5GB 或 10GB。这样驱动在缓存达到上限后会自动清理旧数据不会无限膨胀。需要说明的是这个工具修改的是驱动内部数据库操作前建议先导出备份配置万一改出问题可以恢复。不同驱动版本里这个选项的名字和位置可能略有差异需要自己找一下。4.2 定期清理的自动化思路如果你不想手动记着这件事可以做一个简单的计划任务。用 Windows 任务计划程序设置每月执行一次删除 DXCache 的脚本。脚本内容就是上面那条 PowerShell 命令。不过我不建议把频率设得太高一个月一次足够了。太频繁的话你每次玩游戏都要重新编译着色器体验反而下降。4.3 把缓存目录迁移到其他盘这是我最推荐的方案尤其适合系统盘小、游戏盘大的用户。思路是用一个目录符号链接把 DXCache 的实际存储位置转移到空间充裕的硬盘上。具体做法关闭所有游戏和 NVIDIA 相关进程。把%LOCALAPPDATA%\NVIDIA\DXCache文件夹移动到目标位置比如D:\NVIDIA_Cache\DXCache。以管理员身份打开命令提示符执行mklink /J %LOCALAPPDATA%\NVIDIA\DXCache D:\NVIDIA_Cache\DXCache这条命令创建的是一个目录联接Junction对系统和程序来说路径还是原来的路径但实际数据存在 D 盘。这样既保留了缓存加速的好处又不占用系统盘空间。同样的方法也适用于 GLCache 和 ComputeCache。我自己就是这么干的系统盘从此再没因为显卡缓存告急过。注意移动文件夹之前一定要先关闭占用它的程序否则移动会失败或者数据损坏。移动完成后原来的路径下应该是一个带快捷方式箭头的联接文件夹。5. 常见疑问与踩坑记录5.1 删了之后游戏变卡了怎么办这是最常见的反馈。原因很简单着色器需要重新编译。解决办法就是多玩一会儿让缓存重新建立起来。通常玩个十几分钟到半小时常用着色器就编译得差不多了之后流畅度会恢复到删除前的水平。如果玩了很久还是卡那可能不是缓存的问题而是驱动版本、游戏设置或者硬件本身的问题需要另外排查。5.2 为什么删了之后文件夹大小没变有几种可能删除时游戏还在后台运行文件被占用实际没删掉。你删的是另一个同名文件夹比如某些游戏自己也有缓存目录。删除后你又运行了游戏缓存立刻重新生成了。建议删除后先不要运行任何 DirectX 程序直接查看文件夹是否还存在确认删除成功。5.3 提示需要 System 权限才能删除这个报错通常出现在你试图删除整个 NVIDIA 文件夹而不是只删 DXCache 内容的时候。NVIDIA 文件夹下有些子文件夹的权限设置比较特殊。解决办法是只删除 DXCache 里面的内容保留 DXCache 文件夹本身。或者用管理员权限的命令行来删。如果还是不行重启进入安全模式再删基本都能解决。5.4 DXCache 和驱动版本的关系不同版本的 NVIDIA 驱动对 DXCache 的管理策略不一样。有的版本会主动限制缓存大小有的版本则比较放任。如果你发现某个驱动版本下缓存涨得特别快可以考虑更新到更新的驱动版本或者回退到之前表现正常的版本。另外驱动更新后旧缓存可能失效这时候清理一次是合理的。但不需要每次更新驱动都清理除非你遇到了实际的渲染问题。5.5 常见问题速查表问题现象可能原因处理方式删除时提示文件占用游戏或驱动进程未关闭关闭程序或重启后删除删除后游戏首次加载变慢着色器重新编译正常现象多玩一会儿即可文件夹删除后立即重建有程序在后台运行确认无 DirectX 程序运行提示需要管理员权限文件夹权限限制用管理员命令行或安全模式缓存反复膨胀驱动管理策略或游戏特性设置上限或迁移目录删除后出现渲染异常缓存与驱动不匹配更新驱动或重新编译缓存5.6 几个我踩过的坑第一个坑有一次我在游戏运行时删 DXCache结果删了一半剩下的文件锁住了。后来游戏崩溃了一次重启才好。所以一定要先关游戏。第二个坑我用 mklink 迁移目录的时候忘了先关闭 NVIDIA Container 进程导致联接创建成功但缓存写入异常。后来重启电脑重新操作才正常。迁移这种底层操作重启一次是最保险的。第三个坑我曾经把 DXCache 设成只读想阻止它膨胀。结果驱动写入失败游戏直接报错。不要试图用只读属性来限制缓存正确做法是设上限或迁移。6. 扩展思考缓存管理的通用逻辑6.1 不只是 NVIDIA其实 AMD 显卡也有类似的着色器缓存机制只是文件夹名字和位置不同。Intel 核显同样有缓存目录。甚至很多专业软件比如视频剪辑、3D 渲染工具也会在本地生成各种缓存。理解 DXCache 的逻辑之后你面对其他缓存文件夹时也能举一反三先搞清楚它是干什么的再判断能不能删最后考虑怎么管理。6.2 缓存是空间和时间的交换本质上所有缓存都是拿存储空间换加载时间。DXCache 用硬盘空间换着色器编译时间浏览器缓存用硬盘空间换网页加载时间都是同一个道理。所以判断一个缓存该不该删核心就一句话你更缺空间还是更缺时间。空间紧张就删时间敏感就留两者都想要就迁移或设上限。6.3 养成定期体检的习惯我现在的做法是每隔一两个月用磁盘分析工具扫一遍系统盘看看哪些文件夹异常膨胀。除了 DXCache常见的还有浏览器缓存、微信/QQ 的聊天文件、各种开发工具的缓存目录。定期清理这些比等到磁盘爆满再手忙脚乱要好得多。说到底DXCache 不是什么需要提心吊胆的东西。它就是一个老老实实帮你加速的缓存文件夹删了它会自己回来留着它也不会咬人。真正需要你花心思的是建立一套适合自己的磁盘管理习惯让这些缓存待在它们该待的地方占它们该占的空间。我自己从最初看到 18GB 吓一跳到现在用目录联接把它安排得明明白白中间踩的坑都写在上面的内容里了希望对你有用。