# Steam 和显卡着色器缓存能删吗，会不会影响游戏？

游戏玩得多，显卡驱动也更新过几轮，磁盘里难免攒下不少下载缓存和着色器（Shader）缓存。不过游戏本体、存档、MOD 和普通缓存完全是两码事，弄清楚它们的用处，清理时才不会误伤。

## 下载缓存与着色器缓存要分开看

Steam 的下载缓存主要用在游戏下载和更新阶段。如果遇到下载卡死或校验报错，按 [Steam 官方说明](https://help.steampowered.com/en/faqs/view/6AD7-820D-8BE5-E51F)在客户端设置里清除即可（清理后需要重新登录账号）。

着色器缓存保存已经准备好的图形程序结果，能清理出多少空间要看这台电脑的实际缓存大小，下次启动或进入场景可能需要重新编译，清理缓存并不会凭空提升游戏帧率。

## 着色器缓存省下的是重复编译的工作

游戏里的光照、材质和特效需要通过图形程序交给 GPU 执行，同一段着色器代码在不同显卡、驱动和图形接口下，可能需要不同的编译结果。缓存把这些结果留在磁盘，后面再次遇到相同工作时可以复用，它并不是一份低清晰度游戏素材，也不等于游戏存档。

[NVIDIA 的设置说明](https://www.nvidia.com/content/Control-Panel-Help/vLatest/en-gb/mergedProjects/nv3dENG/Manage_3D_Settings_%28reference%29.htm)解释了驱动着色器缓存用于减少重复编译，驱动更新后也可能需要重新生成。Steam 管理的缓存和显卡驱动管理的缓存是两个位置，清掉一个不代表另一个也清了，更不代表所有游戏都受影响。

## 清理前后，比较同一个场景的两次加载

如果游戏本来没有问题，只是缓存占用大，清理的收益是磁盘空间，代价可能是下一次启动或遇到新场景时重新编译，没必要为了“优化帧率”反复删。若厂商针对某个驱动故障明确要求重建缓存，再按那款游戏的说明做，这与日常定期清理是两种需求。

验证时固定同一款游戏、同一存档、同一图形设置，先记下清理前的表现，清理后观察首次加载，再退出重进观察后续加载。一次开游戏就卡，不能单独证明缓存损坏；首次重建变慢，也不能承诺几分钟后一定恢复，游戏、驱动和场景都会影响这个过程。

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-steam-shader-cache-windows-zh-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-steam-shader-cache-windows-zh.webp" width="1360" height="454" loading="lazy" alt="着色器缓存减少重复准备的工作">
  </picture>
  <figcaption>缓存保存准备好的图形工作，删除后的成本可能是重新编译或获取，并不自动带来更高帧率。</figcaption>
</figure>

## Mole 怎样识别 Steam 游戏库

Mole 会读取 Steam 本身登记的游戏库配置，检查每个已识别游戏库的 `steamapps\shadercache` 下的游戏缓存，不会在磁盘里瞎猜瞎搜。游戏库可以在不同盘上，以实际识别出的路径和清单为准。

如果 Steam 正在运行，相关缓存会被自动保护并跳过。想清理时，先保存游戏进度并退出 Steam，再回到清理列表核对。

## 游戏数据绝不是普通缓存

| 看到的内容 | 建议的处理方式 |
| --- | --- |
| Steam 着色器缓存 | 退出游戏和 Steam 后在清理列表确认，接受下次启动重新编译 |
| Steam 下载卡住或报错 | 优先使用 Steam 客户端自带的清除下载缓存入口 |
| 游戏本体目录 | 使用 Steam 自带的“移动安装文件夹”或正常卸载 |
| 本地存档与 MOD 模组 | 先确认是否备份，这些是个人数据，绝不能当作缓存删除 |

云存档不等于万无一失，重要的单机存档和自己精心配好的 MOD，自己单独复制一份最稳妥。这些文件绝不会被当作临时缓存自动勾选。

## 显卡缓存也有自己的生命周期

除了 Steam，Mole 还会识别 Windows 系统、浏览器以及 NVIDIA / AMD 驱动生成的着色器缓存，并把它们与驱动安装包区分开。更新显卡驱动后，着色器缓存重新慢慢变大属于正常现象。

清理完缓存后，第一次加载变慢可能与重建有关，持续异常则继续查游戏和驱动，不能只凭这个现象确定原因。如果 C 盘真正吃空间的是游戏本体，不妨看看[大文件查找指南](/zh/windows/blog/find-large-files-on-windows)，直接把游戏搬到其他盘会管用得多。


Canonical: https://mole.fit/zh/windows/blog/steam-shader-cache-windows
