如何安全清理 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。Homebrew 用brew cleanup清理旧下载,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 数据,本质上也不是缓存。