配置高级内容缓存设置
您可以针对网络配置微调内容缓存。
您可以在“终端”中使用命令行或通过修改“/资源库/Preferences/com.apple.AssetCache.plist”文件中的键值,来设定内容缓存的高级配置设置。若要使某些更改生效,必须停止并重新启动内容缓存。
您可以设定高级配置参数,方法是使用 defaults
命令,后面跟上命令 sudo AssetCacheManagerUtil reloadSettings
。使用命令 AssetCacheManagerUtil settings
查看标准(非高级)设置。
有关 AssetCacheManagerUtil
命令的更多信息,请参阅在命令行中管理内容缓存和 AssetCacheManagerUtil(8) man 页面。
使用 defaults 命令来设定配置参数
您可以使用 defaults
命令设定简单和复杂密钥。
例如,若要将 Interface
密钥设定为 en1,则应该以管理员身份执行此命令:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Interface -string en1
ListenRanges
是一个获取词典数组的复杂密钥。例如,以管理员身份执行此命令,以设定 ListenRanges 密钥的两个 IP 地址范围:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist ListenRanges '( { first = 10.0.0.1; last = 10.0.0.254; }, { first = 10.1.0.1; last = 10.1.0.254; } )'
使用 defaults 命令后,请确定运行以下命令来重新载入内容缓存设置:
$ sudo AssetCacheManagerUtil reloadSettings
有关 defaults
命令的更多信息,请参阅 defaults(1) man 页面。
缓存配置 plist 密钥和值
【重要事项】请勿更改 com.apple.AssetCache.plist 文件中下表所描述设置之外的任何设置。
键值可以固定在两个值之间。该键值可以是下限值和上限值之间范围内的任何数字。如果设定为低于下限值,则使用下限值。如果将值设定为高于上限值,则使用上限值。例如,PeerDownloadTimeout 固定在 5 和 300 之间。如果将其设定为 301 或 1000,则会将值设定为 300。如果将其设定为 4 或 -10,则会将值设定为 5。
运行 AssetCacheManagerUtil reloadSettings
后某些更改即生效;其他更改需要您停止并重新启动内容缓存才能生效。支持 reloadSettings 的唯一密钥是那些在“内容缓存”偏好设置中也可设定的密钥(下表中有提到)。若要在“内容缓存”偏好设置中设定值,请选取苹果菜单 >“系统偏好设置”,点按“共享”,然后点按“内容缓存”。
键 | 描述 | 默认值 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | 当因磁盘空间不足而从内容缓存清除内容,且清除的内容添加到内容缓存的时间少于这个天数时,您会收到一条空间不足的警告。 | 30(天) | |||||||||
AllowCacheDelete | 当电脑上的其他应用需要磁盘空间时,允许自动从缓存清除内容。 | 是 | |||||||||
AllowImports | 允许导入(上传)请求。 | 是 | |||||||||
AllowPersonalCaching | 允许缓存用户的 iCloud 数据。AllowPersonalCaching 或 AllowSharedCaching 键中必须至少有一个为“Yes”。 您也可以在“内容缓存”偏好设置中设定此值。 | 是 | |||||||||
AllowSharedCaching | 控制非 iCloud 内容的缓存,例如应用和软件更新。AllowPersonalCaching 或 AllowSharedCaching 键中必须至少有一个为“Yes”。 | 是 | |||||||||
AllowWirelessPortable | 允许仅 Wi-Fi 网络连接的便携式电脑运行内容缓存。 | 是 | |||||||||
CacheLimit | 用于内容缓存的最大磁盘空间字节数。 您也可以在“内容缓存”偏好设置中设定此值。 | 0(未限定) | |||||||||
DatabaseUpdateInterval | 内容缓存将更改存储到磁盘上的数据库的频率。增大间隔会增加断电后丢失缓存内容的风险。最多为 3600 秒(1 小时)。间隔为 0 意味着始终立即更新数据库,无任何延迟,这会降低性能。 | 5(秒) | |||||||||
DataPath | 用于储存缓存内容的目录路径。 手动更改此设置不会自动将缓存内容从旧位置移到新位置。若要自动移动内容,请使用“内容缓存”偏好设置(请参阅选择要用于高速缓存的宗卷)。 您也可以在“内容缓存”偏好设置中设定此值。 | /资源库/Application Support/Apple/AssetCache/Data | |||||||||
DownloadMinRate | 客户端在从内容缓存下载内容时,每秒必须维持的最低字节数。当数据传输低于此速率时,内容缓存将停止下载。固定最小值为 1000 字节/秒。 | 8000(字节/秒) | |||||||||
DownloadTimeout | 下载到客户端在放弃前,允许闲置的时长(以秒钟为单位)。固定最小值为 10 秒。 | 180(秒) | |||||||||
ImportMaxRate | 内容缓存从各客户端接收数据的每秒最大字节数。值为 0 时,表示每秒字节数没有限制。 | 0(字节每秒) | |||||||||
ImportMinRate | 客户端在导入(上传)内容时必须维持的每秒最小字节数。当数据传输低于此速率时,内容缓存将停止导入。最小速率为 100 字节/秒。 | 2000(字节每秒) | |||||||||
ImportRateAttenuation | 加到上传时间的衰减百分比。固定的最小值是 0% 的衰减。值太大将会超过 ImportTimeout 并造成故障。 | .20(百分比) | |||||||||
ImportTimeout | 从客户端的导入(上传)在放弃前允许闲置的时长(以秒钟为单位)。最小值为 10 秒。 | 300(秒) | |||||||||
Interface | 内容缓存所用网络接口的 BSD 名称。 | Listen on all interfaces | |||||||||
ListenRanges | 描述要服务的客户端 IP 地址范围的词典数组。 参阅以下使用 ListenRanges 密钥的示例。 您也可以在“内容缓存”偏好设置中设定此值。 | 无 | |||||||||
ListenRangesOnly | 如果将 ListenRangesOnly 设定为 true,则内容缓存仅向 ListenRanges 键所指定范围内的客户端提供内容。 如果想要使用 ListenRangesOnly 密钥,则必须指定 ListenRanges 密钥。 您也可以在“内容缓存”偏好设置中设定此值。 | 否 | |||||||||
ListenWithPeersAndParents | 指示内容缓存是向 ListenRanges、PeerListenRanges 和 Parents 密钥组合注册还是仅向 ListenRanges 密钥注册。 请注意,ListenRanges 应该从 LocalSubnetsOnly 自动生成,而 PeerListenRanges 应该从 PeerLocalSubnetsOnly 自动生成。 | 具体的默认值取决于电脑的历史记录:
| |||||||||
LocalSubnetsOnly | 内容缓存是否应仅向与内容缓存位于同一直接本地网络的客户端提供内容,而不是内容缓存能够访问的所有本地网络上的客户端。 您也可以在“内容缓存”偏好设置中设定此值。 | 是 | |||||||||
LogClientIdentity | 确定内容缓存是否应该记录请求内容的客户端的 IP 地址和端口号。 | 否 | |||||||||
MaxConcurrentClients | 此限制目的在于防止内容缓存用完文件描述符。Apple 不保证内容缓存可以承载 3400 台并发的客户端。 | 3400 | |||||||||
MaxParentDepth | 子内容缓存将请求转发给父内容缓存的最多次数(针对单个请求)。 太深(转发链太长)的请求将被强制转发到原始而非父内容缓存。 | 8 | |||||||||
MaxPeersToQuery | 请求内容的对等内容缓存的最大数量。 | 0(未限定) | |||||||||
MetricsInterval | 将一行指标添加到“/资源库/Application Support/Apple/AssetCache/Metrics/Metrics.db”中指标数据库的频率(以秒钟为单位)。
固定在 1-60 秒(包括)之间。 您可以在“活动监视器”的“缓存”面板中查看这些指标。 | 60(秒) | |||||||||
MetricsMaxAge | 早于此天数的指标会从指标数据库中移除,每天一次。固定最小值为 30 天。 | 30(天) | |||||||||
OriginDownloadTimeout | 允许从 Apple 服务器下载闲置之后放弃(和可能会再次尝试下载)的时长(以秒钟为单位)。固定在 5-300 秒(包括)之间。 | 60 | |||||||||
OriginUploadTimeout | 到源服务器的上传在放弃前允许闲置的时长(以秒钟为单位)。固定在 5 到 3600 秒之间(包括 5 秒和 3600 秒)。 | 600 | |||||||||
ParentDownloadTimeout | 允许从父内容缓存下载闲置之后放弃(和可能会再次尝试下载)的时长(以秒钟为单位)。固定在 5-300 秒(包括)之间。 | 60 | |||||||||
ParentRetryInterval | 在出现五次连续网络故障或服务器错误后,忽略父内容缓存的时长(以秒钟为单位)。固定在 30-3600 秒(包括)之间。 | 900 | |||||||||
Parents | 其他内容缓存的本地 IP 地址列表,此缓存应从这些地址中下载或上传内容,而不是直接从 Apple 下载或上传到 Apple。 无效地址以及内容缓存并未忽略的电脑地址。 根据 ParentRetryInterval,不可用的父缓存会被跳过。 如果所有父内容缓存都不可用,内容缓存将直接从 Apple 下载或上传到 Apple,直到父内容缓存再次可用。 您也可以在“内容缓存”偏好设置中设定此值。 | 无 | |||||||||
ParentSelectionPolicy | 在多个配置的父内容缓存中选取时要使用的策略。 对于每个策略,暂时不可用的父缓存都会被跳过。 策略有:
您也可以在“内容缓存”偏好设置中设定此值。 | 轮替 | |||||||||
ParentUploadTimeout | 到父内容缓存的上传在放弃前,允许闲置的时长(以秒钟为单位)。固定在 5-3600 秒(包括)之间。 | 600 | |||||||||
PeerDownloadTimeout | 允许从对等内容缓存下载闲置之后放弃(和可能会再次尝试下载)的时长(以秒钟为单位)。固定在 5-300 秒(包括)之间。 | 30 | |||||||||
PeerFilterRanges | PeerFilterRanges 为(条目,如 ListenRanges 条目)数组时,内容缓存会根据数组中的范围过滤和排列其对等列表。 内容缓存仅查询在 PeerFilterRanges 内的对等端。过滤和排列将在截断 MaxPeersToQuery 条目处的对等列表之前应用(如果该设置未显示)。 PeerFilterRanges 为空数组时,内容缓存不会查询任何对等端。 PeerFilterRanges 为布尔值 true 时,内容缓存会执行上述相同操作,但使用的是 ListenRanges,而非 PeerFilterRanges 值。 PeerFilterRanges 是其他任何类型或值缺失时,内容缓存在截断 MaxPeersToQuery 条目处的列表之前,既不会过滤也不会排列其对等列表。 PeerFilterRanges 仅影响此内容缓存将从中查询内容和下载的其他内容缓存的列表。它不影响其他任何内容缓存传入的内容请求。 您也可以在“内容缓存”偏好设置中设定此值。 | 无 | |||||||||
PeerListenRanges | PeerListenRanges 为词典数组且每个词典代表一个 IP 地址范围时,内容缓存将只能成功响应 IP 地址包含在此数组范围内的内容缓存的对等缓存查询。 PeerListenRanges 为空数组时,内容缓存在响应任何其他内容缓存的缓存查询时都将返回错误。 PeerListenRanges 为布尔值 true 时,内容缓存会使用 ListenRanges 值(而非 PeerListenRanges 值)来决定它将成功响应哪些其他内容缓存的缓存查询。 PeerListenRanges 为任何其他类型或值丢失时,内容缓存将成功响应所有其他内容缓存的缓存查询。 PeerListenRanges 仅影响此内容缓存将成功响应缓存查询的内容缓存。它不会影响此内容缓存将从中查询内容和下载内容的对等端列表。 内容缓存针对缓存查询使用错误进行响应时,查询内容缓存会将响应内容缓存标记为不友好,并且不再尝试进行查询,直至 PeerRetryInterval 经过。 您也可以在“内容缓存”偏好设置中设定此值。 | 无 | |||||||||
PeerLocalSubnetsOnly | 内容缓存是否只应与位于同一直接本地网络上的其他内容缓存对等,而不是与使用同此电脑相同公共 IP 地址的内容缓存对等。 PeerLocalSubnetsOnly 为 true 时,内容缓存会只查询并成功响应同一直接本地网络上的内容缓存的对等查询。 PeerLocalSubnetsOnly 为 true 时,它将覆盖 PeerFilterRanges 和 PeerListenRanges 的配置。 PeerLocalSubnetsOnly 为 false 时,内容缓存按照 PeerFilterRanges 和 PeerListenRanges 来配置对等访问限制。 PeerLocalSubnetsOnly 为 true 且网络更改时,本地网络的对等访问限制会进行相应的更新。 您也可以在“内容缓存”偏好设置中设定此值。 | 是 | |||||||||
PeerNotifyTimeout | 在启动时“ping”对等内容缓存时,等待其回复的时长(以秒钟为单位)。固定在 5-300 秒(包括)之间。 | 30 | |||||||||
PeerQueryTimeout | 在询问对等内容缓存有关其缓存中的内容时,等待其回复的时长(以秒钟为单位)。固定在 1-60 秒(包括)之间。 | 5 | |||||||||
PeerRetryInterval | 在出现三次连续通知或查询故障后,忽略对等内容缓存的时长(以秒钟为单位)。在重试间隔过去后,对等内容缓存将恢复到对等列表以查询是否有内容。固定在 30-3600 秒(包括)之间。 | 900(秒) | |||||||||
PersonalCacheLimit | 限制内容缓存用于缓存 iCloud 数据的磁盘空间大小(以字节为单位)。PersonalCacheLimit 不得超过 CacheLimit。 | 0(未限定) | |||||||||
Port | 内容缓存用于接受上传或下载请求的 TCP 端口号。 | 0(使用随机端口) | |||||||||
PruneAffinitiesAge | 早于此天数的用户亲缘关系会自动从亲缘关系缓存中移除。用户亲缘关系向客户端提供关于其内容缓存位置的提示,以提升性能。删除用户亲缘关系不会影响缓存的内容。固定最小值为 7 天。 | 30(天) | |||||||||
PruneAffinitiesInterval | 内容缓存应当扫描和移除早于 PruneAffinitiesAge 天数的用户亲缘关系的频率(以天为单位)。仅被 iCloud 使用的用户亲缘关系,它向客户端提供关于其内容缓存位置的提示,以提升性能。删除用户亲缘关系不会影响缓存的内容。固定最小值为一天。 | 7(天) | |||||||||
PruneAssetsAge | 在此天数内还未请求的内容将自动从内容缓存中移除。固定最小值为 7 天。 | 120(天) | |||||||||
PruneAssetsInterval | 内容缓存应当扫描和移除早于 PruneAssetsAge 天数的内容的频率(以天为单位)。固定最小值为一天。 | 7(天) | |||||||||
PublicRanges | 云服务器应将其用于匹配客户端与内容缓存的公共 IP 地址范围。 您也可以在“内容缓存”偏好设置中设定此值。 | 无默认值 | |||||||||
ReservedVolumeSpace | 要维护以用于缓存内容储存宗卷的可用磁盘空间的最小字节数。 | 2000000000 (2 GB) | |||||||||
TerminationTimeout | 内容缓存在被停止时应尝试取消注册的时长(以秒钟为单位)。取消注册会通知客户端该内容缓存不再可用,这样客户端将不再(或者,在内容缓存再次启用前不再)尝试使用该内容缓存。固定在 1-60 秒(包括)之间。 | 10(秒) | |||||||||
Verbose | 当 Verbose=true 时,内容缓存将记录有关其活动的更多一点信息。随着记录的增加,性能会降低。不建议长期使用此设置。 在“终端”应用中使用 例如: 您也可以使用“控制台”应用查看日志。 | 否 |
关于 ListenRanges 密钥
您可以使用 ListenRanges 密钥在高级网络技术中指定首选内容缓存,其中在同一公共 IP 地址后使用多个内容缓存。
例如:
caching1.example.com 使用 ListenRanges 键指定 10.0.0.1 到 10.0.0.254 和 10.1.0.1 到 10.1.0.254 的范围,并将 ListenRangesOnly 键设为“否”。
caching2.example.com 使用 ListenRanges 键指定 10.1.0.1 到 10.1.0.39 的范围(注意与 caching1 第二个范围重叠),并将 ListenRangesOnly 键设为“否”。
如果 IP 地址为 10.0.0.10 的客户端请求内容,则会将其定向到 caching1。
如果 IP 地址为 10.1.0.10 的客户端请求内容,则会将其定向到 caching1 或 caching2(随机选择)。
如果 IP 地址为 10.2.0.10 的客户端请求内容,则会将其定向到 caching1 或 caching2(随机选择)。
如果 caching1 关机或掉电,但 caching2 保持可用,则所有客户端都将定向到 caching2。
plist 文件示例
以下是“/资源库/Preferences/com.apple.AssetCache.plist”文件的示例。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CacheLimit</key>
<!-- Set a CacheLimit of 200 GB -->
<integer>200000000000</integer>
<key>DataPath</key>
<string>/Volumes/BigDisk/Library/Application Support/Apple/AssetCache/Data</string>
<key>Interface</key>
<string>en1</string>
<key>ListenRanges</key>
<array>
<dict>
<key>type</key>
<string>IPv4</string>
<key>first</key>
<string>10.1.2.1</string>
<key>last</key>
<string>10.1.2.254</string>
</dict>
<dict>
<key>type</key>
<string>IPv6</string>
<key>first</key>
<string>2001:500:88:200::1</string>
<key>last</key>
<string>2001:500:88:200::99</string>
</dict>
</array>
<key>LogClientIdentity</key>
<string>true</string>
<key>Port</key>
<integer>12345</integer>
<key>ReservedVolumeSpace</key>
<!-- Set the ReservedVolumeSpace to 1 GB -->
<integer>1000000000</integer>
</dict>
</plist>