Caches Directory : définition, gestion du cache et nettoyage des données

Auteur : IT Sectr Publié le : 2026-07-10 Temps de lecture : 10 min

Caches Directory est un répertoire dans le sandbox de l’application iOS conçu pour stocker des données temporaires qui peuvent être restaurées ou rechargées depuis le réseau. Selon Apple File System Basics (2024), le système peut supprimer des fichiers du Caches Directory à tout moment pour libérer de l’espace disque. L’application doit gérer correctement l’absence de ces fichiers et les restaurer si nécessaire. Contrairement au Documents Directory, les données de Caches ne sont pas incluses dans les sauvegardes iCloud et iTunes, ce qui réduit la charge sur le stockage cloud de l’utilisateur.

Points Clés

  • Caches Directory est un stockage temporaire pour les données qui peuvent être restaurées depuis le réseau ou recréées.
  • Le système iOS peut à tout moment supprimer des fichiers de Caches lorsque l’espace de stockage est insuffisant.
  • Les données de Caches ne sont pas incluses dans les sauvegardes iCloud et iTunes.
  • Le chemin d’accès au répertoire s’obtient via NSCachesDirectory ou FileManager.urls(for: .cachesDirectory).
  • La principale différence avec Documents : Caches n’est pas destiné aux données utilisateur dont la perte serait critique.

Qu’est-ce que le Caches Directory sous iOS ?

Caches Directory est un répertoire à l’intérieur du sandbox de l’application iOS optimisé pour stocker des données qui peuvent être restaurées si nécessaire. Contrairement au Documents Directory, Caches n’est pas destiné aux données utilisateur. C’est un stockage temporaire pour accélérer les performances de l’application.

iOS utilise le Caches Directory pour stocker les réponses réseau mises en cache, les images préchargées, les objets sérialisés et les données que l’application peut restaurer. Les développeurs ne doivent pas compter sur le stockage à long terme dans ce répertoire.

Selon Apple WWDC 2020, environ 40 % des applications iOS utilisent le Caches Directory pour stocker des images et des données réseau mises en cache, tandis que 25 % des développeurs placent incorrectement dans Caches des données qui devraient se trouver dans Documents ou Application Support, faute de comprendre les différences entre ces répertoires.

Une propriété critique de Caches : l’application doit gérer correctement les situations où un fichier de cache a été supprimé par le système. Si la suppression du cache casse les fonctionnalités de l’application, alors les données sont stockées dans le mauvais répertoire.

Comment obtenir le chemin vers Caches Directory

En Swift, le chemin vers Caches Directory s’obtient en utilisant la méthode standard FileManager avec .cachesDirectory. C’est une opération simple utilisée dans pratiquement toutes les applications iOS qui travaillent avec des données réseau.

swift
import Foundation

let fileManager = FileManager.default
guard let cachesURL = fileManager.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first else { return }

// Save cached JSON
let cacheFile = cachesURL.appendingPathComponent("feed_cache.json")
let jsonData = try JSONSerialization.data(
    withJSONObject: response,
    options: [.prettyPrinted]
)
try jsonData.write(to: cacheFile)

Objective-C utilise NSSearchPathForDirectoriesInDomains avec NSCachesDirectory. Bien qu’Apple recommande l’API Swift, le code Objective-C avec Caches Directory reste fonctionnel et pris en charge.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSCachesDirectory,
    NSUserDomainMask,
    YES
);
NSString *cachesPath = paths.firstObject;
NSString *cacheFile = [cachesPath stringByAppendingPathComponent:@"feed_cache.plist"];

Les projets Swift devraient préférer l’API basée sur les URL : elle est type-safe et s’intègre mieux avec les frameworks modernes comme SwiftUI et Combine.

Quelles données stocker dans Caches

Caches Directory est optimal pour plusieurs catégories de données que l’application utilise pour accélérer les performances, mais ce n’est pas la seule source de vérité. Choisir les bonnes données à mettre en cache affecte directement l’UX et les performances de l’application.

Réponses réseau mises en cache

Réponses JSON des API, données de flux d’actualités, listes d’objets. Tout ce que l’application peut télécharger à nouveau depuis le serveur. Utilisez URLCache pour la mise en cache automatique des réponses HTTP ou sauvegardez manuellement les objets sérialisés.

Images et fichiers multimédia

Les images téléchargées depuis le réseau sont le cas d’utilisation le plus courant du Caches Directory. Les bibliothèques comme SDWebImage et Kingfisher sauvegardent les images mises en cache dans Caches par défaut.

Type de donnéesAdapté pour CachesPériode de conservation
JSON réponses APIOuiJusqu’au nettoyage système
Images du réseauOuiJusqu’au nettoyage système
Logs de débogageConditionnelPlutôt dans tmp
Sauvegardes de jeuxNonDocuments uniquement
Configurations d’appNonApplication Support

Si les données ne peuvent pas être restaurées, elles n’ont pas leur place dans Caches. C’est le critère le plus simple : imaginez que demain le système supprime tous les fichiers de Caches. Si l’application continue de fonctionner correctement, les données sont stockées correctement.

Comment le système gère le nettoyage du cache

iOS gère automatiquement le nettoyage du Caches Directory, mais les déclencheurs et algorithmes exacts ne sont pas documentés par Apple. On sait que le système peut supprimer des fichiers de Caches lorsque l’espace disque est faible, ainsi que lorsque la fonction Offload Unused Apps est active.

Le processus de nettoyage est transparent pour l’application : le système supprime les fichiers sans notification. L’application doit vérifier l’existence du fichier avant de le lire et le recréer s’il est absent. Ne pas compter sur le stockage à long terme est une exigence clé lorsqu’on travaille avec Caches.

Selon l’article d’Apple « File System Basics » (2024), l’application ne doit pas s’attendre à ce que les fichiers du Caches Directory soient disponibles entre les sessions. Il est recommandé aux développeurs d’implémenter un mécanisme de secours : si un fichier en cache est manquant, téléchargez les données depuis le réseau et sauvegardez-les à nouveau dans Caches.

Un scénario distinct est le déchargement d’application (Offload). Lorsque cette fonction est activée, iOS supprime l’application mais conserve son Documents Directory. Le Caches Directory est supprimé dans le processus. Un utilisateur qui restaure l’application n’aura pas de données en cache. L’application doit les télécharger à nouveau.

Caches Directory vs Temporary Directory

La différence entre les répertoires Caches et Temporary (tmp) prête souvent à confusion chez les développeurs. Les deux répertoires stockent des données temporaires, mais avec des garanties de durée de vie et des objectifs différents.

CaractéristiqueCaches DirectoryTemporary Directory
Durée de vieDe session en session (non garantie)Au sein d’une seule session
Nettoyage systèmeQuand l’espace est faibleÀ la fin de la session ou au redémarrage
ObjectifCache pour accélérer les performancesDonnées très temporaires
ExempleImages mises en cacheFichier temporaire avant export
SauvegardeNonNon

Choisissez Caches s’il est utile de conserver les données entre les lancements de l’application mais qu’elles peuvent être restaurées. Utilisez tmp si les données ne sont nécessaires que dans la session en cours et n’ont aucune valeur après la fin de l’application.

Bonnes pratiques avec Caches

Travailler avec le Caches Directory nécessite de suivre plusieurs règles qui aident à éviter la perte de données, les comportements inattendus de l’application et les problèmes de performances.

Toujours vérifier l’existence du fichier avant de lire

FileManager.fileExists(atPath:) doit être appelé avant chaque lecture depuis Caches. Si le fichier est manquant, chargez les données depuis la source d’origine et sauvegardez-les dans le cache. Ne présumez jamais qu’un fichier dans Caches existe.

Limiter la taille du cache

Définissez une taille maximale pour le Caches Directory dans votre application. Par exemple, une limite de 50 Mo pour les images et 10 Mo pour les réponses JSON. Lorsque la limite est dépassée, supprimez les fichiers les plus anciens par date de modification.

swift
import Foundation

func trimCache(to maxSizeBytes: Int) {
    let cachesURL = FileManager.default
        .urls(for: .cachesDirectory, in: .userDomainMask)
        .first!

    guard let enumerator = FileManager.default
        .enumerator(
            at: cachesURL,
            includingPropertiesForKeys: [.fileSizeKey, .contentModificationDateKey]
        )
    else { return }

    // Enumerate and remove old files
    // when exceeding size limit
}

Suivre ces bonnes pratiques garantit que l’application fonctionne correctement indépendamment des actions de nettoyage du cache système, et que les utilisateurs ne subissent pas de perte de données inattendue.

Questions Fréquentes

Le système notifie-t-il l’application avant de vider le Caches Directory ?

Non, iOS n’envoie pas de notifications avant de supprimer des fichiers de Caches. Le processus de nettoyage est complètement transparent pour l’application. La seule façon de savoir qu’un fichier a été supprimé est d’essayer de le lire. FileManager retourne nil ou lance une erreur, et l’application doit gérer cette situation.

L’utilisateur peut-il vider manuellement le Caches Directory ?

Les utilisateurs n’ont pas d’accès direct au Caches Directory via Files ou iTunes. Cependant, ils peuvent vider le cache de toutes les applications via Réglages > Général > Stockage, sélectionner une application spécifique et appuyer sur « Décharger l’app ». iOS peut également vider automatiquement le cache lorsque l’espace est insuffisant.

En quoi URLCache diffère-t-il de la sauvegarde manuelle dans Caches Directory ?

URLCache est un mécanisme intégré de mise en cache des requêtes HTTP de Foundation. Il sauvegarde et charge automatiquement les réponses mises en cache, en utilisant le Caches Directory en interne. La sauvegarde manuelle offre plus de contrôle : vous pouvez choisir le format, chiffrer les données et gérer la durée de vie de chaque fichier individuellement.

Qu’arrive-t-il au Caches Directory lors d’une mise à jour de l’application ?

Lors de la mise à jour de l’application via l’App Store, le Caches Directory est conservé. Cependant, le contenu peut être supprimé par le système si la nouvelle mise à jour nécessite plus d’espace pour l’installation. Le développeur ne doit pas compter sur la persistance de Caches après une mise à jour. C’est une raison supplémentaire pour implémenter un mécanisme de secours.

Comment désactiver la mise en cache automatique pour NSURLSession ?

Définissez URLCache sur nil pour une session NSURLSession spécifique ou utilisez la politique de cache .reloadIgnoringLocalCacheData. Vous pouvez également créer une URLSessionConfiguration avec un cache vide : sessionConfiguration.urlCache = nil. C’est utile pour les données qui doivent toujours être à jour.

Résumé

  • Caches Directory est un stockage temporaire pour les données qui peuvent être restaurées depuis le réseau ou recréées.
  • Le système iOS peut à tout moment supprimer des fichiers de Caches sans notifier l’application.
  • Les données de Caches ne sont pas incluses dans les sauvegardes iCloud et iTunes, ce qui économise de l’espace.
  • Le chemin d’accès au répertoire est FileManager.urls(for: .cachesDirectory) en Swift ou NSSearchPathForDirectoriesInDomains en Objective-C.
  • Caches stocke les images mises en cache, les réponses JSON d’API et d’autres données récupérables.
  • Contrairement à tmp, Caches peut conserver les données entre les lancements, mais sans garantie.
  • Toujours vérifier l’existence du fichier avant de lire depuis Caches et implémenter un chargement de secours.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi