介绍

Content Caching(内容缓存)是什么

Content Caching本来是OS X Server提供的一项服务,能够提供诸如加速设备的应用安装速度,减少网络流量消耗等多项功能,需要购买或者使用开发者证书才能使用。到了10.13 High Sierra,Apple终于在系统中直接附带了这项服务,所以现在普通用户也可以享受到其带来的便利了。

Content Caching能做什么

根据官方文档,Content Caching主要的功能是:

  • 加速Apple分发的应用下载
  • 加速用户存储在iCloud的数据传输(iCloud Library、iCloud Drive)

以上对于Mac电脑、iOS设备和Apple TV都适用。 值得注意的是,中国区账号无法缓存iTunes的下载内容

Content Caching是如何工作的

这里只描述本地联网设备

在 Mac 上启用内容缓存后,它将保留本地联网设备(称为客户端)所下载所有内容的副本。 例如,网络上的第一台客户端下载 macOS 更新时,内容缓存会保留该更新的一份副本。网络上的下一台客户端连接到 App Store 以下载更新时,将从内容缓存拷贝更新,而非从 App Store 拷贝。 由于本地网络通常比互联网快,因此第二台客户端(和所有后续客户端)将更快地下载更新。

也就是说,Content Caching将会下载缓存住任何连接设备的下载请求内容。

基本设置

开启Content Caching

  1. System Preferences -> Sharing ,勾选 Content Caching ,右侧选中 Cache iCloud content
  2. 打开 Options ,将 Cache Size 拖到最右侧Unlimited1
  3. 按住 Alt 键则可以打开 Advanced Options ,我只在局域网内使用,其它项均保持默认值
  4. 如果有外接磁盘,选项里可以选择缓存的存放位置

命令行操作

也可以通过Terminal来查看当前的设置:

  • 空间限制 defaults read /Library/Preferences/com.apple.AssetCache.plist | grep CacheLimit
  • 已用空间 defaults read /Library/Preferences/com.apple.AssetCache.plist | grep SavedCacheSize
  • 保存位置 defaults read /Library/Preferences/com.apple.AssetCache.plist | grep DataPath

另外附带的 AssetCacheManagerUtil 工具也可以了解一下。

官方的最佳实践

  • 允许所有 Apple 推送通知。
  • 不要使用手动代理设置。
  • 不要将客户端请求代理到内容缓存。
  • 绕过内容缓存的代理鉴定。
  • 指定缓存的 TCP 端口。
  • 管理站点间缓存流量。
  • 阻止伪缓存注册。

对于非中国区用户,看看就好了,毕竟不设置代理网络就是半瘫的。

使用效果

开启Content Caching后自己能够感知到的,前两天我恢复了一次iPhone,过程中Mac的 AssetCache 进程一直以几MB/s的速度上传,很快就完成了。 :-)

参考资料

上面只记录了Content Caching的基本设置,还有不少可以调整的地方,有需要可以参看以下介绍:


  1. 当磁盘空间不足的话系统会自动清理(先删除本地TimeMachine快照还是这个未知)。如果设置为固定大小的话,一旦空间快满系统就会通知提示清理。缓存的增长还是很快的,我Reset了不到半天就又用了快500MB了。 ↩︎