← 所有文章

~/Library/Caches:这个博客里一半内容背后的那个文件夹

Mac 上大部分应用的缓存都堆在 ~/Library/Caches 这一个文件夹里。这里讲清楚里面到底存了什么、怎么用 du 按大小给各个应用排名,以及哪些内容可以放心清理。

· 更新于 2026年9月14日
macOSStorageCacheLibrary

更多同类指南目前仅提供英文版本。 查看全部文章


如果你读过这个博客不止一篇文章,应该已经注意到一个规律:DerivedData、浏览器缓存、Electron 应用缓存、CocoaPods、JetBrains 索引——它们中的绝大多数,其实都住在同一个目录下面。与其一个应用一个应用地查,不如直接把这个目录整个看一遍,一次搞定。

open ~/Library/Caches

访达默认会隐藏 ~/Library——按住 Option 键的同时点击访达的前往菜单就能显示出来,或者直接用上面这条 open 命令,完全绕过隐藏文件夹的设置。

这个文件夹为什么存在,以及为什么它天生就安全

~/Library/Caches 正是苹果自己为这个用途专门指定的位置——存放任何应用都能重新生成或重新下载的数据,操作系统在磁盘紧张时被明确允许清空这里的内容。这不是开发者自己发明的惯例,而是苹果文件系统布局里有文档记载的一部分,任何行为规范的 Mac 应用,凡是非必要的数据都应该放在这里。

正是这一点事实,让这个文件夹在你磁盘上几乎所有位置里,都显得异常适合大范围清空:按照苹果自己的设计,这里的任何东西都不应该是任何重要数据的唯一副本。 实际存在的例外——少数几个把 Caches 文件夹用来存放并非真正可丢弃数据的应用——数量少到值得专门点名,本文下面就会讲到。

直接读一遍,按大小排序

du -sh ~/Library/Caches/* 2>/dev/null | sort -hr | head -30

在几乎任何一台用了一年以上的 Mac 上,光这一条命令,就会翻出这个博客其他指南里讲到的那些一模一样的名字: com.apple.Safari、Google/Chrome、org.swift.swiftpm、Homebrew、CocoaPods、pip、 JetBrains,外加几十个体积较小的条目,来自你根本想不到要单独去查的各种应用。

这些文件夹名几乎总是反向 DNS 格式的包标识符 (com.company.AppName),要么就是普通的包名(pip、Homebrew)——如果看到一个不认识的, mdfind "kMDItemCFBundleIdentifier == '<the-name>'" 通常能告诉你它属于哪个已安装的应用。

大范围清空的做法

对大多数人来说,大多数时候,这样做真的没问题:

rm -rf ~/Library/Caches/*

每一个行为规范的应用,下次运行时都会从这个文件夹里重新生成自己需要的东西——这正是这个目录存在的全部意义。看得见的代价,就是本博客其他地方讲到的每一项单独代价加总起来:浏览器重新拉取资源、包管理器在下次安装时重新下载、Xcode 的索引重建,等等——不会有什么东西坏掉,只是有几样东西会短暂变慢。

值得点名记住的例外

有少数应用把自己的 Caches 子文件夹用来存放一些丢了代价比“缓存”这个词听起来要大得多的数据,各自的详细情况在专门的文章里讲过:

  • Slack 的 IndexedDB 可能保存着还没发出去的草稿消息——见 Slack 和 Discord 指南。
  • 任何把 IndexedDB 当作本地优先存储来用的应用(一些 PWA、一些笔记应用)——见 浏览器缓存指南。
  • Docker 的缓存严格来说完全不在这个文件夹里 ——它在 ~/Library/Containers 下面的一个虚拟机磁盘镜像里,而不是 ~/Library/Caches,值得知道这一点,免得整体清空 Caches 之后,产生一种“Docker 也顺便处理掉了”的错觉。见 Docker 磁盘空间指南。

本博客讲到的其他一切——DerivedData 严格来说是在 ~/Library/Developer 下面,不是 ~/Library/Caches,这是另一个值得知道、正好躲在这个文件夹波及范围之外的地方——要么直接就在 ~/Library/Caches 里面,要么即便苹果把它归档在稍微不同的顶层目录下,也依然遵循同一条“可以安全重新生成”的原则。

为什么扫描一遍终究比直接整体删除更好

rm -rf ~/Library/Caches/* 是安全的,但它也是盲目的——它没法告诉你 45 GB 里有 40 GB 是哪三个应用占的,也没法在上面提到的 Slack IndexedDB 例外发生之前提醒你。一份逐字节的明细,排好序、标好名字,能把“清空缓存文件夹、祈祷别出事”变成“这四件事才是真正值得了解的,按顺序来”。

DevCruft 是一款正在开发中、面向开发者的免费 Mac 应用。它要读的正是这个文件夹——外加 DerivedData、Docker 的容器存储,以及其他所有紧挨在它外面的东西——设计目标是给出和上面 du 命令一样的排名明细,只不过每一项都标注它实际是什么、安不安全,而不是一个要你自己手动去查的包标识符。想在它推出时第一时间知道,可以加入候补名单。

这是本轮新增的十篇指南里的最后一篇。想要更全面地了解都是什么东西塞满了开发者的 Mac,可以从完整的开发者存储指南开始看起。

一款专门做这件事的免费应用正在开发中。

我们正在开发 DevCruft,用来找出这类指南中提到的每一种缓存,并告诉你每一种占用了多少空间。加入等候名单,在它推出时获得通知。

只在推出时发一封邮件,别无其他。你可以随时要求我们将你移除。 隐私政策