![](https://help.apple.com/assets/664256E0F9FFA26F690A0B01/664256E3F9FFA26F690A0B07/zh_HK/312766e3df7f57c1f549da2dab216b36.png)
在 Mac 上的進階內容快取設定
你可以使用網絡設定來微調進階設定參數。
你可以在「終端機」中使用命令列或修改「/Library/Preferences/com.apple.AssetCache.plist」檔案中的鍵值,來設定內容快取的進階設定參數。 如要使部份變更生效,則必須停止並重新啟動內容快取。
設定進階設定
你可以透過前往「系統設定」(macOS 13 或較新版本)或「系統偏好設定」(macOS 12.0.1 或較早版本)>「分享」>「內容快取」來為內容快速服務設定多項進階設定。 然後按住 Option 鍵並選取「進階選項」。
你可以透過 Mac 上的「終端機」App 使用 defaults
指令再接著 sudo AssetCacheManagerUtil reloadSettings
指令,以設定更多進階設定。 使用 AssetCacheManagerUtil settings
指令來檢視標準(非進階)設定。
你可以使用 defaults
指令來設定簡易和複雜鍵值。
例如,如要將埠號碼(50000)寫死為非動態埠號碼,該埠號碼應介乎 49192 至 65535 間的任何號碼,請以管理員身份來執行此指令:
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Port -int 50000
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
快取設定 plist 密鑰和值
重要事項:請勿更改 com.apple.AssetCache.plist 中的任何設定,下表中所述項目除外。
鍵值可具有被鉗制在兩個數值之間的值。 此密鑰數值可以是範圍介於最小值與最大值之間的任何數字。 如果它被設為在下限值之下,便會使用下限值。 如果該值被設為在上限值之上,便會使用上限值。 例如,PeerDownloadTimeout 會鉗制在 5-300 之間。 如果其被設為 301 或 1000,則該值會設為 300。 如果其被設為 4 或 -10,則該值會設為 5。
部份變更會在你執行 AssetCacheManagerUtil reloadSettings
後生效;其他的變更則需要你停止然後重新啟動內容快取。 支援 reloadSettings 的唯一鍵值則是也可在「內容快取」偏好設定中設定的鍵值(於下表中註明)。 在「內容快取」偏好設定中設定值:
macOS 13 或較新版本: 選擇「蘋果」選單 >「系統設定」>「一般」>「分享」>「內容快取」。
macOS 12.0.1 或較早版本: 選擇「蘋果」選單 >「系統偏好設定」>「分享」>「內容快取」。
鍵 | 説明 | 預設值 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
連接埠 | 指定內容快取接受上載或下載要求時使用的 TCP 埠號。 | 0(使用隨機傳輸埠) | |||||||||
AgeForLowSpaceAlert | 當內容因為儲存空間不足而開始清除內容快取的內容時提示你,並在已清除的內容又於時限內還原至快取時,你會收到空間不足的提示。 | 30(日) | |||||||||
AllowCacheDelete | 允許在電腦的其他 App 需要儲存空間時,自動從快取中清除內容。 為獲得內容快取的最佳效能,請關閉此設定。 | 是 | |||||||||
AllowImports | 允許輸入(上載)要求。 | 是 | |||||||||
AllowPersonalCaching | 允許用户 iCloud 資料的快取。 至少必須選擇 AllowPersonalCaching 或 AllowSharedCaching 其中一個密鑰。 你也可在「內容快取」設定中設定此值。 | 是 | |||||||||
AllowSharedCaching | 非 iCloud 內容的快取控制項目,例如 App 和軟件更新。 至少必須選擇 AllowPersonalCaching 或 AllowSharedCaching 其中一個密鑰。 | 是 | |||||||||
AllowWirelessPortable | 允許只有 Wi-Fi 網絡連線的 Mac 手提電腦執行內容快取。 | 是 | |||||||||
CacheLimit | 指定用於內容快取的最大儲存空間(以 byte 為單位)。 你也可在「內容快取」設定中設定此值。 | 0(不設限) | |||||||||
DatabaseUpdateInterval | 指定內容快取將變更儲存至其儲存空間上的資料庫之頻率。 增加間隔會提高停電後遺失快取內容的風險。 最大值是 3600 秒(1 小時)。 間隔為 0 表示總是立即更新資料庫,不會延遲,但會影響表現。 | 5(秒) | |||||||||
DataPath | 指定用來儲存快取內容的目錄路徑。 手動更改此設定並不會自動將快取的內容從舊位置移至新位置。 如要自動搬移內容,請使用「內容快取」設定。 你也可在「內容快取」設定中設定此值。 | /Library/Application Support/Apple/AssetCache/Data | |||||||||
DisplayAlerts | 為內容快取提示顯示通知。 為獲得內容快取的最佳效能,請開啟此設定。 | 否 | |||||||||
DownloadMinRate | 指定用户端在輸入(上載)內容時所須維持的最小值(以 byte 為單位)。 內容快取會停止傳輸資料速度低於這個速度的輸入。 最小鉗制值是每秒 1000 byte。 | 8000(byte/秒) | |||||||||
DownloadTimeout | 指定允許放棄用户端進行下載之前維持閒置的時間長度(以秒為單位)。 最小鉗制值是 10 秒。 | 180(秒) | |||||||||
ImportMaxRate | 指定內容快取從每個用户端接收資料的每秒最大 byte 數。 值為 0 表示每秒不限位元組。 | 0(byte/秒) | |||||||||
ImportMinRate | 指定用户端在輸入(上載)內容時所需維持的每秒最小 byte 數。 內容快取會停止傳輸資料速度小於這個速度的輸入。 最小速率為 100 byte/秒。 | 2000(byte/秒) | |||||||||
ImportRateAttenuation | 指定加入上載時間的衰減百分比。 最小鉗制值是 0% 衰減。 數值太大會超過 ImportTimeout 並導致失敗。 | .20(百分比) | |||||||||
ImportTimeout | 指定允許放棄從用户端進行輸入(上載)之前可保持閒置的時間長度(以秒為單位)。 最小值為 10 秒。 | 300(秒) | |||||||||
Interface | 指定內容快取使用之網絡介面的 BSD 名稱。 例如:en0。 並且總是監聽回繞介面(localhost)。 | 監聽所選介面 | |||||||||
KeepAwake | 避免電腦在內容快取開啟時進入睡眠狀態。 為獲得內容快取的最佳適用範圍,請開啟此設定。 在「系統設定」(macOS 13 或較新版本)或「系統偏好設定」(macOS 12.0.1 或較早版本)的「能源節約器」中,剔選「避免電腦在顯示器關閉時自動進入睡眠」剔選框。 | 否 | |||||||||
ListenRanges | 辭典陣列,用來說明要服務的用户端 IP 位址範圍。 請參閲下方以取得使用 ListenRanges 鍵值的範例。 這類型的子鍵已非必須,且出現時會被忽略。 你也可在「內容快取」設定中設定此值。 | 無 | |||||||||
ListenRangesOnly | 如 ListenRangeOnly 是設定為 true,內容快取只會將內容提供給 ListenRanges 鍵值指定範圍中的用户端。 如果你要使用 ListenRangesOnly 鍵值,也必須指定 ListenRangesOnly。 你也可在「內容快取」設定中設定此值。 | 否 | |||||||||
ListenWithPeers AndParents | 表示內容快取是以 ListenRanges、PeerListenRanges 和 Parents 聯合鍵登錄,還是只以 ListenRanges 鍵登錄。 請注意,ListenRanges 可自動從 LocalSubnetsOnly 產生,而 PeerListenRanges 可自動從 PeerLocalSubnetsOnly 產生。 | 預設值取決於電腦的記錄:
| |||||||||
LocalSubnetsOnly | 表示內容快取是否應只提供內容給同一即時區域網絡上作為內容快取的用户端,或提供給內容快取可連接之所有區域網絡上的用户端。 你也可在「內容快取」設定中設定此值。 | 是 | |||||||||
LogClientIdentity | 決定內容快取是否應記錄要求內容之用户端的 IP 位址和埠號。 | 否 | |||||||||
MaxConcurrentClients | 指定內容快取可支援的客户端最大數量。 Apple 並不保證內容快取可同時服務 3400 個用户端。 | 3400 | |||||||||
MaxParentDepth | 指定單一要求(下層內容快取將要求轉送至上層內容快取)的次數上限。 太深的要求(轉送鏈過長)會被強制送至來源,而非上層。 | 8 | |||||||||
MaxPeersToQuery | 指定要求內容之對等點內容快取的最大數量。 | 0(不設限) | |||||||||
MetricsInterval | 指定在 /Library/Application Support/Apple/AssetCache/Metrics/Metrics.db 中的度量資料庫內加入一列度量的頻率(以秒為單位)。
鉗制在 1-60 秒之間(包括最大和最小值)。 你可在「活動監視器」的「快取」面板中檢視這些度量。 | 60(秒) | |||||||||
MetricsMaxAge | 此時間以前的度量都會從度量資料庫中移除,每天移除一次。 最小鉗制值是 30 日。 | 30(日) | |||||||||
OriginDownloadTimeout | 指定允許放棄(並可能再次嘗試下載)從 Apple 伺服器進行下載之前保持閒置的時間長度(以秒為單位)。 鉗制在 5-300 秒之間(包括最大和最小值)。 | 60 | |||||||||
OriginUploadTimeout | 指定允許放棄從用户端上載到來源伺服器之前可保持閒置的時間長度(以秒為單位)。 鉗制在 5-3600 秒之間(包括最大和最小值)。 | 600 | |||||||||
ParentDownloadTimeout | 指定允許放棄(並可能再次嘗試下載)從上層內容快取進行下載之前保持閒置的時間長度(以秒為單位)。 鉗制在 5-300 秒之間(包括最大和最小值)。 | 60 | |||||||||
ParentRetryInterval | 指定在對等點內容快取連續收到五次網絡故障或伺服器錯誤後,忽略上層內容快取的時間長度(以秒為單位)。 鉗制在 30-3600 秒之間(包括最大和最小值)。 | 900 | |||||||||
Parents | 其他內容快取的本機 IP 位址列表,此快取應從此列表下載或上載內容,而不是直接從 Apple 下載或上載至 Apple。 無效的地址或非內容快取的電腦地址會被忽略。 變成無法使用的上層快取則會依據 ParentRetryInterval 被略過。 如果所有上層內容快取都變成無法使用,則內容快取會直接從 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 | 指定對等點內容快取在啟動連線時,等待對等點內容快取回覆的時間長度(以秒為單位)。 鉗制在 5-300 秒之間(包括最大和最小值)。 | 30 | |||||||||
PeerQueryTimeout | 指定在要求對等點內容快取的快取內容時等待這些內容回覆的時間長度(以秒為單位)。 鉗制在 1-60 秒之間(包括最大和最小值)。 | 5 | |||||||||
PeerRetryInterval | 指定在對等點內容快取連續收到三次通知或詢問失敗之後忽略這些內容快取的時間長度(以秒為單位)。 重試間隔時間過去之後,對等點內容快取會被還原到詢問內容之對等點的列表。 鉗制在 30-3600 秒之間(包括最大和最小值)。 | 900(秒) | |||||||||
PersonalCacheLimit | 限制內容快取用於快取 iCloud 資料的儲存空間容量(以 byte 為單位)。 PersonalCacheLimit 不能超過 CacheLimit。 | 0(不設限) | |||||||||
PruneAffinitiesAge | 用户相似值如超過這個日數則會自動從相似快取中移除。 用户相似值會提供用户端提示,告知內容快取的位置以提升效能。 刪除用户相似值並不會影響快取內容。 最小鉗制值是 7 日。 | 30(日) | |||||||||
PruneAffinitiesInterval | 指定內容快取應掃描和移除超過 PruneAffinitiesAge 天數的用户相似值之頻率(以天數計算)。 用户相似值(只由 iCloud 使用)會提供用户端提示,告知內容快取的位置以提升效能。 刪除用户相似值並不會影響快取內容。 最小鉗制值是一日。 | 7(日) | |||||||||
PruneAssetsAge | 此日數內沒有被要求的內容會自動從內容快取中移除。 最小鉗制值是 7 日。 | 120(日) | |||||||||
PruneAssetsInterval | 指定內容快取應掃描和移除 PruneAssetsAge 日數以前之內容的頻率(以日數計)。 最小鉗制值是一日。 | 7(日) | |||||||||
PublicRanges | 指定雲端伺服器應該用以將用户端配對至內容快取的公用 IP 位址範圍。 你也可在「內容快取」設定中設定此值。 | 沒有預設值 | |||||||||
ReservedVolumeSpace | 指定儲存快取內容的卷宗上要維持的最小可用儲存空間(以 byte 為單位)。 | 2000000000(2 GB) | |||||||||
TerminationTimeout | 指定內容快取應於停止時嘗試解除登錄的時間長度(以秒計算)。 撒消註冊會通知用户端內容快取已無法使用,因此不會再嘗試使用該內容快取(或直到內容快取重新啟動為止)。 鉗制在 1-60 秒之間(包括最大和最小值)。 | 10(秒) | |||||||||
Verbose | 當「Verbose = true」時,內容快取會記錄其活動更多的相關資料。 增加的記錄可能會影響表現。 此設定並不建議長期使用。 在「終端機」App 中使用 例如: 你也可以使用「系統監視程式」來檢視記錄。 | 否 |
ListenRanges 密鑰範例
在相同的公用 IP 位址之後使用多個內容快取時,你可以使用 ListenRanges 鍵值來在此進階的網絡拓蹼中指定偏好的內容快取。
例如:
caching1.betterbag.comm 會使用 ListenRanges 鍵值來指定 10.0.0.1 至 10.0.0.254 以及 10.1.0.1 至 10.1.0.254 的範圍,並將 ListenRangesOnly 鍵值設定為 No。
caching2.betterbag.com 會使用 ListenRanges 鍵值來指定 10.1.0.1 至 10.1.0.39 的範圍(請注意此範圍與 caching1 的第二個範圍重疊),並將 ListenRangesOnly 鍵值設定為 No。
如 IP 位址為 10.0.0.10 的用户端要求內容,則它會被導向 caching1。
如 IP 位址為 10.1.0.10 的用户端要求內容,則它會被導向 caching1 或 caching2(隨機選取)。
如 IP 位址為 10.2.0.10 的用户端要求內容,則它會被導向 caching1 或 caching2(隨機選取)。
如 caching1 關機或電源中斷,但 caching2 依然可用,所有的用户端皆會被導向 caching2。
plist 檔案範例
以下是 /Library/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/BigVolume/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>