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 或較早版本:選擇「蘋果」選單 >「系統偏好設定」>「共享」>「內容快取」。
密鑰 | 說明 | 預設值 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
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 | 指定內容快取從每個用戶端接收資料的每秒最大位元組。值為 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 下載或上傳到 Apple,直到上層內容快取再次變成可用為止。 你也可在「內容快取」設定中設定此值。 | 無 | |||||||||
ParentSelectionPolicy | 選擇多個已設定之上層內容快取時,要使用的規則。 依據每一個規則,暫時無法使用的上層快取會被略過。 規則如下:
你也可在「內容快取」設定中設定此值。 | round-robin | |||||||||
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(不設限) | |||||||||
Port | 指定內容快取接受上傳或下載要求時使用的 TCP 埠號。 | 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.com 會使用 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>