Configurer les réglages avancés de la mise en cache de contenu
Vous pouvez définir avec précision la mise en cache de contenu pour votre configuration de réseau.
Vous pouvez définir des réglages de configuration avancés pour le cache de contenu en utilisant la ligne de commande dans Terminal ou en modifiant la valeur des clés dans le fichier /Bibliothèque/Preferences/com.apple.AssetCache.plist. Pour que certaines modifications prennent effet, la mise en cache de contenu doit être arrêtée et redémarrée.
Vous pouvez définir des réglages de configuration avancés à l’aide de la commande defaults
, suivie par la commande sudo AssetCacheManagerUtil reloadSettings
. Utilisez la commande AssetCacheManagerUtil settings
pour afficher les paramètres standards (non avancés).
Pour en savoir plus sur la commande AssetCacheManagerUtil
, consultez la rubrique Gérer la mise en cache de contenu à partir de la ligne de commande et la page man AssetCacheManagerUtil(8).
Utiliser la commande defaults pour définir des paramètres de configuration
Vous pouvez définir des clés simples et complexes avec la commande defaults
.
Par exemple, pour définir la clé Interface
sur en1, exécutez cette commande en tant qu’administrateur :
$ sudo -u _assetcache defaults write /Library/Preferences/com.apple.AssetCache.plist Interface -string en1
ListenRanges
est une clé complexe qui accepte une gamme de dictionnaires. Par exemple, exécutez cette commande en tant qu’administrateur pour définir deux plages d’adresses IP pour la clé ListenRanges :
$ 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; } )'
Lorsque vous avez utilisé la commande defaults, assurez-vous d’exécuter la commande suivante pour recharger les réglages du cache de contenu :
$ sudo AssetCacheManagerUtil reloadSettings
Pour en savoir plus sur la commande defaults
, consultez la page man defaults(1).
Clés et valeurs plist de configuration de la mise en cache
Important : ne modifiez aucun réglage dans le fichier com.apple.AssetCache.plist, autres que ceux décrits dans le tableau ci-dessous.
La valeur d’une clé peut être forcée entre deux valeurs. Elle peut donc être comprise entre les valeurs inférieure et supérieure. Si la valeur définie est inférieure à la limite inférieure, celle-ci est utilisée. Si elle est définie au-dessus de la limite supérieure, celle-ci est utilisée. Par exemple, la valeur PeerDownloadTimeout est forcée entre 5 et 300. Si elle est définie sur 301 ou 1 000, elle est ramenée à 300. Si elle est définie sur 4 ou -10, elle est portée à 5.
Certaines modifications prennent effet après que vous ayez exécuté AssetCacheManagerUtil reloadSettings
. D’autres nécessitent que vous arrêtiez puis redémarriez la mise en cache de contenu. Les seules clés qui prennent en charge reloadSettings sont celles qui peuvent également être définies dans les préférences Mise en cache de contenu (notées dans le tableau ci-dessous). Pour définir des valeurs dans les préférences Mise en cache de contenu, choisissez le menu Pomme > Préférences Système, cliquez sur Partage, puis sur Mise en cache de contenu.
Clé | Description | Par défaut | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
AgeForLowSpaceAlert | Lorsque du contenu est purgé du cache de contenu, car il arrive à court d’espace disque, et que le contenu purgé a été ajouté au cache de contenu il y a moins de temps que ce nombre de jours, vous recevez une alerte d’espace disque faible. | 30 (jours) | |||||||||
AllowCacheDelete | Autorise la purge du contenu du cache automatiquement lorsque l’ordinateur a besoin d’espace disque pour d’autres apps. | Oui | |||||||||
AllowImports | Autorise les demandes d’importation (téléchargements). | Oui | |||||||||
AllowPersonalCaching | Autoriser la mise en cache des données iCloud des utilisateurs. Au moins une des clés AllowPersonalCaching ou AllowSharedCaching doit avoir « Oui » comme valeur. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | Oui | |||||||||
AllowSharedCaching | Contrôle la mise en cache du contenu externe à iCloud, comme les apps et les mises à jour logicielles. Au moins une des clés AllowPersonalCaching ou AllowSharedCaching doit avoir « Oui » comme valeur. | Oui | |||||||||
AllowWirelessPortable | Autorise les ordinateurs portables qui disposent uniquement de connexions au réseau Wi-Fi d’exécuter la mise en cache de contenu. | Oui | |||||||||
CacheLimit | Le nombre maximum d’octets d’espace disque qui seront utilisés pour le cache de contenu. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | 0 (illimité) | |||||||||
DatabaseUpdateInterval | La fréquence à laquelle le cache de contenu enregistre les modifications dans sa base de données sur disque. En augmentant l’intervalle, on augmente également le risque de perdre du contenu mis en cache en cas de coupure de courant. La valeur maximale est de 3 600 secondes (1 heure). Un intervalle de 0 signifie que le serveur doit toujours mettre à jour la base de données immédiatement, sans délai, ce qui diminue les performances. | 5 (secondes) | |||||||||
DataPath | Il s’agit du chemin vers le répertoire utilisé pour stocker le contenu mis en cache. La modification manuelle de ce réglage ne déplace pas automatiquement le contenu mis en cache de l’ancien emplacement vers le nouveau. Pour déplacer le contenu automatiquement, utilisez les préférences Mise en cache de contenu (voir la rubrique Sélectionner un volume pour la mise en cache). Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | /Bibliothèque/Application Support/Apple/AssetCache/Data | |||||||||
DownloadMinRate | Nombre minimum d’octets par seconde que les clients doivent maintenir lors du téléchargement de contenu à partir du cache de contenu. Le cache de contenu arrête les téléchargements qui transfèrent des données moins rapidement que ce débit. La valeur minimale forcée est de 1 000 octets par seconde. | 8 000 (octets par seconde) | |||||||||
DownloadTimeout | Durée (en secondes) pendant laquelle un téléchargement vers un client est autorisé à être inactif avant d’être abandonné. La valeur minimale forcée est de 10 secondes. | 180 (secondes) | |||||||||
ImportMaxRate | Le débit maximal en octets par seconde auquel le cache de contenu peut recevoir des données de chaque client. Une valeur de 0 indique un débit illimité d’octets par seconde. | 0 (octet par seconde) | |||||||||
ImportMinRate | Le nombre maximum d’octets par seconde que les clients doivent maintenir pendant l’importation (téléchargement) de contenu. Le cache de contenu arrête les importations qui transfèrent des données moins rapidement que ce débit. Le débit minimum est de 100 octets par seconde. | 2 000 (octets par seconde) | |||||||||
ImportRateAttenuation | Le pourcentage d’atténuation ajouté au délai de transfert. La valeur minimale forcée est 0 % d’atténuation. Une valeur trop importante peut dépasser la clé ImportTimeout et provoquer des erreurs. | 0,20 (pourcentage) | |||||||||
ImportTimeout | Durée (en secondes) pendant laquelle une importation (chargement) à partir d’un client est autorisée à être inactive avant d’être abandonnée. La valeur minimale est 10 secondes. | 300 (secondes) | |||||||||
Interface | Le nom BSD d’une interface réseau devant être utilisée par le cache de contenu. | Écouter sur toutes les interfaces | |||||||||
ListenRanges | Il s’agit d’une gamme de dictionnaires décrivant la plage d’adresses IP de clients à servir. Vous trouverez plus bas un exemple qui utilise la clé ListenRanges. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | aucun | |||||||||
ListenRangesOnly | Si ListenRangesOnly est défini sur Vrai, le cache de contenu fournit le contenu uniquement aux clients se trouvant dans les plages indiquées par la clé ListenRanges. Si vous voulez utiliser la clé ListenRangesOnly, vous devez également indiquer la clé ListenRanges. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | Non | |||||||||
ListenWithPeersAndParents | Indique si la mise en cache de contenu s’inscrit avec l’ensemble des clés ListenRanges, ListenRanges et Parents ou uniquement avec la clé ListenRanges. Notez que ListenRanges peut être automatiquement générée à partir de LocalSubnetsOnly et PeerListenRanges peut être automatiquement générée à partir de PeerLocalSubnetsOnly. | La valeur par défaut dépend de l’historique de l’ordinateur :
| |||||||||
LocalSubnetsOnly | Définit si le cache de contenu doit uniquement offrir du contenu aux clients sur le même réseau local immédiat que le cache de contenu, plutôt qu’aux clients sur tous les réseaux locaux accessibles par le cache de contenu. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | Oui | |||||||||
LogClientIdentity | Détermine si le cache de contenu doit enregistrer l’adresse IP et le numéro de port des clients qui demandent du contenu. | Non | |||||||||
MaxConcurrentClients | Cette limite vise à éviter que la mise en cache de contenu manque de descripteurs de fichier. Apple ne garantit pas qu’un cache de contenu puisse gérer 3 400 clients simultanément. | 3 400 | |||||||||
MaxParentDepth | Le nombre maximal de fois, pour une demande unique, qu’un cache de contenu enfant transmettra la demande à un cache de contenu parent. Les demandes trop profondes (dont la chaîne de renvoi est trop longue) sont forcées vers l’origine plutôt que vers un parent. | 8 | |||||||||
MaxPeersToQuery | Le nombre maximum de caches de contenu pairs auxquels demander du contenu. | 0 (illimité) | |||||||||
MetricsInterval | Durée (en secondes) pour ajouter une rangée d’indicateurs à la base de données des indicateurs dans /Bibliothèque/Application Support/Apple/AssetCache/Metrics/Metrics.db.
Valeur forcée entre 1 et 60 secondes, incluses. Vous pouvez afficher ces indicateurs dans la sous-fenêtre Cache de Moniteur d’activité. | 60 (secondes) | |||||||||
MetricsMaxAge | Les indicateurs plus anciens que celui-ci sont supprimés de la base de données des indicateurs, une fois par jour. La valeur minimale forcée est de 30 jours. | 30 (jours) | |||||||||
OriginDownloadTimeout | Durée (en secondes) d’inactivité autorisée d’un téléchargement depuis des serveurs Apple avant son abandon (et éventuellement une nouvelle tentative). Forcée entre 5 et 300 secondes, incluses. | 60 | |||||||||
OriginUploadTimeout | Durée (en secondes) pendant laquelle un chargement vers un serveur d’origine est autorisé à être inactif avant d’être abandonné. Forcée entre 5 et 3600 secondes, incluses. | 600 | |||||||||
ParentDownloadTimeout | Durée (en secondes) pendant laquelle un téléchargement à partir d’un cache de contenu parent est autorisé à être inactif avant d’être abandonné. Il est possible qu’une autre tentative de téléchargement soit lancée. Forcée entre 5 et 300 secondes, incluses. | 60 | |||||||||
ParentRetryInterval | Durée (en secondes) pendant laquelle ignorer les caches de contenu parents après qu’ils aient accumulé cinq erreurs de serveur ou défaillances du réseau consécutives. Forcée entre 30 à 3 600 secondes, incluses. | 900 | |||||||||
Parents | Une liste des adresses IP locales d’autres caches de contenu desquels ce cache doit télécharger ou charger du contenu, plutôt que de le télécharger ou de le charger directement auprès d’Apple. Les adresses non valides et les adresses des ordinateurs qui ne sont pas des caches de contenu sont ignorées. Les caches parents qui deviennent indisponibles sont ignorés conformément à ParentRetryInterval. Si tous les caches de contenu parents deviennent indisponibles, le cache de contenu chargera ou téléchargera directement auprès d’Apple jusqu’à ce qu’un cache de contenu parent redevienne disponible. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | aucun | |||||||||
ParentSelectionPolicy | La règle à utiliser lors de la sélection parmi plusieurs caches de contenu parents configurés. Avec chaque règle, les caches parents qui sont temporairement indisponibles sont ignorés. Les règles sont les suivantes :
Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | round robin | |||||||||
ParentUploadTimeout | Durée (en secondes) pendant laquelle un chargement vers un cache de contenu parent est autorisé à être inactif avant d’être abandonné. Forcée entre 5 et 3 600 secondes, incluses. | 600 | |||||||||
PeerDownloadTimeout | Durée (en secondes) pendant laquelle un téléchargement à partir d’un cache de contenu pair est autorisé à être inactif avant d’être abandonné. Il est possible qu’une autre tentative de téléchargement soit lancée. Forcée entre 5 et 300 secondes, incluses. | 30 | |||||||||
PeerFilterRanges | Lorsque PeerFilterRanges consiste en un tableau d’entrées (telles que ListenRanges), le cache de contenu filtre et trie la liste de pairs correspondante en fonction des plages se trouvant dans le tableau. Le cache de contenu n’interroge que les pairs qui se trouvent dans PeerFilterRanges. Le filtrage et le tri sont appliqués avant de tronquer la liste de pairs au niveau des entrées MaxPeersToQuery (si ce réglage est présent). Lorsque PeerFilterRanges consiste en un tableau vide, le cache de contenu n’interrogera aucun pair. Lorsque PeerFilterRanges est une valeur booléenne vraie, le cache de contenu procède comme ci-dessus, mais utilise ListenRanges au lieu de la valeur PeerFilterRanges. Lorsque PeerFilterRanges présente un autre type ou lorsque la valeur est manquante, le cache de contenu ne filtre ni ne trie la liste correspondante de pairs avant de tronquer la liste au niveau des entrées MaxPeersToQuery. PeerFilterRanges n’a d’impact que sur la liste des autres caches de contenu auxquels ce cache de contenu demande du contenu et auprès desquels il télécharge. Il n’a aucun effet sur les demandes entrantes de contenu de tout autre cache de contenu. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | aucun | |||||||||
PeerListenRanges | Lorsque PeerListenRanges est un tableau de dictionnaires où chaque dictionnaire représente une plage d’adresses IP, le cache de contenu ne répond qu’aux requêtes de mise en cache des caches de contenu pairs dotés d’une adresse IP comprise dans ce tableau de plages. Lorsque PeerListenRanges consiste en un tableau vide, le cache de contenu renverra une erreur aux requêtes de mise en cache de tout autre cache de contenu. Lorsque PeerListenRanges est une valeur booléenne vraie, le cache de contenu utilise la valeur ListenRanges plutôt que la valeur PeerListenRanges pour déterminer de quels autres caches de contenu il acceptera les requêtes de mise en cache. Lorsque PeerListenRanges présente un autre type ou lorsque la valeur est manquante, le cache de contenu répondra aux requêtes de mise en cache provenant de tous les autres caches de contenu. PeerListenRanges n’a d’impact que sur les caches de contenu pour lesquels ce cache de contenu répondra aux requêtes de mise en cache. Il n’a aucun impact sur la liste des pairs auxquels ce cache de contenu demandera du contenu et auprès desquels il téléchargera du contenu. Lorsqu’un cache de contenu répond à une requête de mise en cache par une erreur, le cache de contenu émetteur de la requête marque le cache de contenu qui a répondu comme inamical et ne tente plus de l’interroger tant que PeerRetryInterval n’est pas écoulé. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | aucun | |||||||||
PeerLocalSubnetsOnly | Détermine si le cache de contenu doit être pair uniquement avec les autres caches de contenu sur le même réseau local immédiat, plutôt qu’avec les caches de contenu qui utilisent la même adresse IP publique que cet ordinateur. Lorsque la valeur PeerLocalSubnetsOnly est « Vrai », le cache de contenu interroge et répond uniquement aux requêtes de pair provenant de caches de contenu sur le même réseau local immédiat. Lorsque la valeur de PeerLocalSubnetsOnly est « Vrai », cela a pour effet de supplanter la configuration de PeerFilterRanges et de PeerListenRanges. Lorsque la valeur de PeerLocalSubnetsOnly est « Faux », le cache de contenu s’en remet à PeerFilterRanges et PeerListenRanges pour la configuration des restrictions d’échanges entre pairs. Lorsque la valeur de PeerLocalSubnetsOnly est « Vrai » et que le réseau change, les restrictions d’échanges entre pairs pour le réseau local sont mises à jour en conséquence. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | Oui | |||||||||
PeerNotifyTimeout | Durée d’attente (en secondes) des réponses des caches de contenu pairs lorsque le système leur envoie une commande ping lors du démarrage. Forcée entre 5 et 300 secondes, incluses. | 30 | |||||||||
PeerQueryTimeout | Durée d’attente (en secondes) des réponses des caches de contenu pairs lorsque le système leur envoie une demande d’informations relatives au contenu dans leurs caches. Forcée entre 1 et 60 secondes, incluses. | 5 | |||||||||
PeerRetryInterval | Durée (en secondes) du rejet des caches de contenu pairs à la suite d’une accumulation de trois avertissements ou échecs de demande consécutifs. Une fois l’intervalle de nouvelles tentatives dépassé, les caches de contenu pairs sont restaurés dans la liste de pairs à interroger pour du contenu. Forcée entre 30 et 3600 secondes, incluses. | 900 (secondes) | |||||||||
PersonalCacheLimit | Limite la quantité d’espace disque que le cache de contenu utilise pour les données iClould mises en cache, en octets. La clé PersonalCacheLimit ne doit pas dépasser la clé CacheLimit. | 0 (illimité) | |||||||||
Port | Le numéro du port TCP sur lequel la mise en cache de contenu accepte les requêtes de chargements ou de téléchargements. | 0 (utilisez un port aléatoire) | |||||||||
PruneAffinitiesAge | Les affinités d’utilisateur plus anciennes que ce nombre de jours sont supprimées automatiquement du cache des affinités. Les affinités d’utilisateur fournissent aux clients des indications sur l’emplacement de mise en cache de leur contenu, afin d’améliorer les performances. Le nettoyage des affinités d’utilisateur n’a aucun effet sur le contenu mis en cache. La valeur minimale forcée est de 7 jours. | 30 (jours) | |||||||||
PruneAffinitiesInterval | Fréquence (en jours) à laquelle le cache de contenu doit rechercher et supprimer les affinités d’utilisateur antérieures au nombre de jours PruneAffinitiesAge. Les affinités d’utilisateur, utilisées uniquement par iCloud, fournissent des indications aux clients sur l’emplacement de mise en cache de leur contenu, afin d’améliorer les performances. Le nettoyage des affinités d’utilisateur n’a aucun effet sur le contenu mis en cache. La valeur minimale forcée est d’un jour. | 7 (jours) | |||||||||
PruneAssetsAge | Le contenu qui n’a pas été demandé au cours de ce nombre de jours est supprimé automatiquement du cache de contenu. La valeur minimale forcée est de 7 jours. | 120 (jours) | |||||||||
PruneAssetsInterval | Fréquence (en jours) à laquelle le cache de contenu doit rechercher et supprimer le contenu antérieur au nombre de jours PruneAssetsAge. La valeur minimale forcée est d’un jour. | 7 (jours) | |||||||||
PublicRanges | Plages d’adresses IP publiques que les serveurs dans le nuage doivent utiliser pour associer les clients aux caches de contenu. Vous pouvez également définir cette valeur dans les préférences Mise en cache de contenu. | aucune valeur par défaut | |||||||||
ReservedVolumeSpace | Il s’agit du nombre minimum d’octets d’espace disque libre à maintenir pour le volume qui contient le contenu mis en cache. | 2000000000 (2 Go) | |||||||||
TerminationTimeout | Durée (en secondes) pendant laquelle le cache de contenu doit tenter de supprimer son enregistrement lorsqu’il est arrêté. La suppression de l’enregistrement informe les clients que le cache de contenu n’est plus disponible afin qu’ils n’essayent plus d’utiliser ce cache de contenu (ou jusqu’à ce que le cache de contenu soit redémarré). Forcée entre 1 et 60 secondes, incluses. | 10 (secondes) | |||||||||
Verbose | Lorsque Verbose=vrai, le cache de contenu enregistre un peu plus d’informations à propos de ses activités. L’augmentation de l’enregistrement peut réduire les performances. Ce réglage n’est pas recommandé pour une utilisation à long terme. Utilisez la commande Par exemple : Vous pouvez également utiliser l’app Console pour afficher les historiques. | Non |
À propos de la clé ListenRanges
La clé ListenRanges vous permet d’indiquer les caches de contenu préférés dans des topologies réseau avancées dans lesquelles plusieurs caches de contenu sont utilisés derrière la même adresse IP publique.
Par exemple :
miseencache1.exemple.com utilise la clé ListenRanges pour indiquer une plage de 10.0.0.1 à 10.0.0.254 et de 10.1.0.1 à 10.1.0.254, et donne la valeur « No » à la clé ListenRangesOnly.
miseencache2.example.com utilise la clé ListenRanges pour indiquer une plage de 10.1.0.1 à 10.1.0.39 (notez le chevauchement avec la deuxième plage de miseencache1), et donne la valeur « No » à la clé ListenRangesOnly.
Si un client utilisant l’adresse IP 10.0.0.10 demande du contenu, celui-ci est dirigé vers la miseencache1.
Si un client utilisant l’adresse IP 10.1.0.10 demande du contenu, celui-ci est dirigé vers la miseencache1 ou la miseencache2, de manière aléatoire.
Si un client utilisant l’adresse IP 10.2.0.10 demande du contenu, celui-ci est dirigé vers la miseencache1 ou la miseencache2, de manière aléatoire.
Si la miseencache1 est mise hors tension ou tombe en panne, mais que la miseencache2 reste disponible, tous les clients sont dirigés vers la miseencache2.
Exemple de fichier plist
Voici un exemple de fichier /Bibliothèque/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>