介绍
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
System Preferences
->Sharing
,勾选Content Caching
,右侧选中Cache iCloud content
- 打开
Options
,将Cache Size
拖到最右侧Unlimited1 - 按住
Alt
键则可以打开Advanced Options
,我只在局域网内使用,其它项均保持默认值 - 如果有外接磁盘,选项里可以选择缓存的存放位置
命令行操作
也可以通过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的基本设置,还有不少可以调整的地方,有需要可以参看以下介绍:
- Content Caching in macOS High Sierra
- Setup The Caching Service On macOS High Sierra
- Set up content caching
- Configure advanced content caching settings
当磁盘空间不足的话系统会自动清理(先删除本地TimeMachine快照还是这个未知)。如果设置为固定大小的话,一旦空间快满系统就会通知提示清理。缓存的增长还是很快的,我Reset了不到半天就又用了快500MB了。 ↩︎