如何安全清理 Mac 缓存
缓存通常可以重新生成,但名字里有 Cache 的文件夹不一定安全。应用有时会把离线下载、会话状态、索引和未同步内容放在缓存附近。清理前要确认三个问题:谁创建了这些文件,重新生成的数据从哪里来,缓存失效后会发生什么。
缓存、状态和数据不是一回事
应用放在自身程序包之外的内容,大致可以分成三类:
- 缓存可以重新计算或下载,比如缩略图、编译输出和为了加速而保留的下载文件。删除后首次打开可能变慢,也会增加网络流量,并失去离线内容。
- 状态记录当前会话,比如窗口、滚动位置和草稿。丢失后通常不会造成永久数据损失,但会影响继续工作。
- 数据无法自动恢复,比如聊天记录、照片资料库和保存的登录信息。删除会造成实际损失。
同一个目录里可能混合这三类内容,所以“清空所有缓存”容易误伤。~/Library/Caches 下的路径是有用线索,但还不足以单独证明可以删除。
有明确原因时再清缓存
适合清理的情况包括:已经测量到某个缓存占用了急需的空间;应用的官方排障文档要求清理;索引已经确认损坏或过期。把清缓存当成固定仪式没有帮助,macOS 和许多应用会在压力下自动淘汰缓存,全部重建反而会暂时增加启动时间、耗电和网络流量。
Mac 缓存通常在哪里
~/Library/Caches/保存当前用户的应用缓存,子目录通常使用 Bundle ID,比如com.google.Chrome/Library/Caches/保存系统范围的缓存/System/...受到系统完整性保护,不要尝试清理
~/Library/Preferences 中保存的是应用设置,不是缓存。macOS 还会通过 cfprefsd 在内存中管理偏好设置。应用运行时手动删除 .plist,可能丢失设置、被内存中的旧值覆盖,或让应用与偏好缓存不同步。优先在应用内修改设置,只对有正式说明的偏好域和键使用 defaults,不要把它当通用清理命令。
先找出最大的缓存
du -sh ~/Library/Caches/* 2>/dev/null | sort -h
常见大项有以下几类:
- 浏览器缓存可能达到数 GB。通过 Safari、Chrome 等浏览器自己的设置清理,能够把网页缓存与历史记录、Cookie 和登录信息分开。
- 开发工具缓存往往更大。Xcode 的
~/Library/Developer/Xcode/DerivedData可能占用数十 GB,包管理器也有自己的存储。brew cleanup清理 Homebrew 的旧下载,npm 可以先运行npm cache verify,只有明确为了排障或释放空间时才用npm cache clean --force。 - Quick Look 缩略图可以按需重建,使用
qlmanage -r cache重置。
清理前先退出对应应用。运行中的应用可能正打开或以内存映射方式使用缓存文件,写入过程中删除会破坏缓存数据库,让一次空间清理变成应用故障。
浏览器里的 Cookie、网站数据、历史记录、密码和页面缓存是不同选项。目标只是释放磁盘空间时,只选择缓存内容。删除全部浏览数据可能让网站退出登录,或清掉离线状态,却没有额外释放多少缓存。
按类别检查后再清理
手动清理完全可行,只是 Bundle ID 与目录名不总是容易辨认。清理工具应当在操作前显示归属、路径、大小和类别,并默认排除配置文件、文稿、模型目录和聊天记录。Mole 的“清理”视图采用这种清理前确认方式。判断是否安全时,明确跳过范围和逐条路径验证,比找到多少文件更重要。
“可以安全清理”需要哪些检查
Mole 的开源命令行工具在 lib/clean 中展示了实际检查方式,原生 App 则用 Swift 实现同类规则。
安全实现会优先调用包管理器自己的清理接口,后台服务仍在运行时不碰构建缓存,对解析后的路径重新验证,并给缓慢的容量探测设置超时。拥有者工具不存在、路径含义不清或目录被明确保护时,应当保留并交给人工确认。递归删除整个 Caches 目录会绕过这些检查。
即使看起来像缓存,也不要清理
- AI 助手的聊天历史和对话记录,这些是无法重新生成的数据
- 偏好设置和保存的登录信息
/System下的任何内容- 无法确认用途的文件夹
清理时按这个顺序
先测量并确认归属,退出应用,优先使用应用自己的存储设置或清理命令,每次只处理一个类别。重新打开应用并确认登录、离线内容和项目正常,再清空废纸篓。偏好设置、描述文件、聊天、文稿和含义不明的 Application Support 数据都不应当作缓存处理。只有释放空间或排障收益高于重新下载与重建成本时,清理才有意义。