Caches Directory: Was es ist, Cache-Verwaltung und Datenbereinigung

Autor: IT Sectr Veröffentlicht: 2026-07-10 Lesezeit: 10 Min.

Caches Directory ist ein Verzeichnis in der Sandbox der iOS-App, das für die Speicherung temporärer Daten konzipiert ist, die aus dem Netzwerk wiederhergestellt oder neu geladen werden können. Laut Apple File System Basics (2024) kann das System Dateien aus dem Caches Directory jederzeit löschen, um Speicherplatz freizugeben. Die App muss das Fehlen dieser Dateien korrekt behandeln und sie bei Bedarf wiederherstellen. Im Gegensatz zum Documents Directory werden Daten aus Caches nicht in iCloud- und iTunes-Backups einbezogen, was die Belastung des Cloud-Speichers des Benutzers reduziert.

Wichtige Punkte

  • Caches Directory ist ein temporärer Speicher für Daten, die aus dem Netzwerk wiederhergestellt oder neu erstellt werden können.
  • Das iOS-System kann bei Speicherplatzmangel auf dem Gerät jederzeit Dateien aus Caches löschen.
  • Daten aus Caches werden nicht in iCloud- und iTunes-Backups einbezogen.
  • Der Pfad zum Verzeichnis wird über NSCachesDirectory oder FileManager.urls(for: .cachesDirectory) abgerufen.
  • Der Hauptunterschied zu Documents: Caches ist nicht für Benutzerdaten vorgesehen, deren Verlust kritisch wäre.

Was ist das Caches Directory in iOS?

Caches Directory ist ein Verzeichnis innerhalb der iOS-App-Sandbox, das für die Speicherung von Daten optimiert ist, die bei Bedarf wiederhergestellt werden können. Im Gegensatz zum Documents Directory ist Caches nicht für Benutzerdaten gedacht, sondern ein temporärer Speicher zur Beschleunigung der App-Leistung.

iOS verwendet das Caches Directory zum Speichern von zwischengespeicherten Netzwerkantworten, vorgeladenen Bildern, serialisierten Objekten und Daten, die die App wiederherstellen kann. Entwickler sollten sich nicht auf die langfristige Datenspeicherung in diesem Verzeichnis verlassen.

Laut Apple WWDC 2020 verwenden etwa 40% der iOS-Apps das Caches Directory zum Speichern von zwischengespeicherten Bildern und Netzwerkdaten, während 25% der Entwickler fälschlicherweise Daten in Caches ablegen, die in Documents oder Application Support gehören, weil sie die Unterschiede zwischen diesen Verzeichnissen nicht verstehen.

Eine kritische Eigenschaft von Caches: Die App muss Situationen korrekt behandeln, in denen eine Cache-Datei vom System gelöscht wurde. Wenn das Entfernen des Caches die App-Funktionalität beeinträchtigt, werden die Daten im falschen Verzeichnis gespeichert.

So erhalten Sie den Pfad zum Caches Directory

In Swift wird der Pfad zum Caches Directory mit der Standardmethode FileManager mit .cachesDirectory abgerufen. Dies ist eine einfache Operation, die in praktisch jeder iOS-App verwendet wird, die mit Netzwerkdaten arbeitet.

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 verwendet NSSearchPathForDirectoriesInDomains mit NSCachesDirectory. Obwohl Apple die Swift-API empfiehlt, bleibt Objective-C-Code mit Caches Directory funktionsfähig und wird unterstützt.

objective-c
@import Foundation;

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

Swift-Projekte sollten die URL-basierte API bevorzugen: Sie ist typsicher und lässt sich besser in moderne Frameworks wie SwiftUI und Combine integrieren.

Welche Daten in Caches speichern

Caches Directory ist optimal für mehrere Datenkategorien, die die App zur Leistungssteigerung verwendet, aber es ist nicht die alleinige Quelle der Wahrheit. Die richtige Auswahl der Daten für die Zwischenspeicherung wirkt sich direkt auf die UX und die App-Leistung aus.

Zwischengespeicherte Netzwerkantworten

JSON-Antworten von APIs, Newsfeed-Daten, Objektlisten — alles, was die App erneut vom Server herunterladen kann. Verwenden Sie URLCache für automatisches Caching von HTTP-Antworten oder speichern Sie serialisierte Objekte manuell.

Bilder und Mediendateien

Aus dem Netzwerk heruntergeladene Bilder sind der häufigste Anwendungsfall für das Caches Directory. Bibliotheken wie SDWebImage und Kingfisher speichern zwischengespeicherte Bilder standardmäßig in Caches.

DatentypGeeignet für CachesAufbewahrungsdauer
JSON API-AntwortenJaBis zur Systembereinigung
Bilder aus dem NetzwerkJaBis zur Systembereinigung
Debug-LogsBedingtBesser in tmp
SpielständeNeinNur Documents
App-KonfigurationenNeinApplication Support

Wenn Daten nicht wiederhergestellt werden können, gehören sie nicht in Caches. Dies ist das einfachste Kriterium: Stellen Sie sich vor, das System löscht morgen alle Dateien aus Caches. Wenn die App weiterhin korrekt funktioniert, werden die Daten richtig gespeichert.

Wie das System die Cache-Bereinigung verwaltet

iOS verwaltet die Bereinigung des Caches Directory automatisch, aber die genauen Auslöser und Algorithmen sind von Apple nicht dokumentiert. Bekannt ist, dass das System Dateien aus Caches löschen kann, wenn der Speicherplatz knapp ist, sowie wenn die Funktion zum Auslagern ungenutzter Apps aktiv ist.

Der Bereinigungsprozess ist für die App transparent: Das System löscht Dateien ohne Benachrichtigung. Die App muss vor dem Lesen die Existenz der Datei überprüfen und sie bei Fehlen neu erstellen. Sich nicht auf langfristige Speicherung zu verlassen, ist eine wichtige Anforderung bei der Arbeit mit Caches.

Laut Apples Artikel „File System Basics“ (2024) sollte die App nicht erwarten, dass Dateien im Caches Directory zwischen Sitzungen verfügbar sind. Entwicklern wird empfohlen, einen Fallback-Mechanismus zu implementieren: Wenn eine zwischengespeicherte Datei fehlt, laden Sie die Daten aus dem Netzwerk herunter und speichern Sie sie erneut in Caches.

Ein separates Szenario ist das Auslagern von Apps (Offload). Wenn diese Funktion aktiviert wird, entfernt iOS die App, behält aber ihr Documents Directory. Das Caches Directory wird dabei gelöscht. Ein Benutzer, der die App wiederherstellt, erhält keine zwischengespeicherten Daten — die App muss sie erneut herunterladen.

Caches Directory vs. Temporary Directory

Der Unterschied zwischen Caches und Temporary (tmp)-Verzeichnissen sorgt bei Entwicklern oft für Verwirrung. Beide Verzeichnisse speichern temporäre Daten, jedoch mit unterschiedlichen Lebensdauergarantien und Zwecken.

MerkmalCaches DirectoryTemporary Directory
LebensdauerVon Sitzung zu Sitzung (nicht garantiert)Nur innerhalb einer Sitzung
SystembereinigungBei SpeicherplatzmangelBei Sitzungsende oder Neustart
ZweckCache zur LeistungssteigerungSehr temporäre Daten
BeispielZwischengespeicherte BilderTemporäre Datei vor Export
BackupNeinNein

Wählen Sie Caches, wenn es vorteilhaft ist, Daten zwischen App-Starts zu behalten, sie aber wiederhergestellt werden können. Verwenden Sie tmp, wenn Daten nur in der aktuellen Sitzung benötigt werden und nach Beendigung der App keinen Wert mehr haben.

Bewährte Verfahren für die Arbeit mit Caches

Die Arbeit mit dem Caches Directory erfordert die Einhaltung mehrerer Regeln, die helfen, Datenverlust, unerwartetes App-Verhalten und Leistungsprobleme zu vermeiden.

Vor dem Lesen immer die Dateiexistenz überprüfen

FileManager.fileExists(atPath:) sollte vor jedem Lesen aus Caches aufgerufen werden. Wenn die Datei fehlt, laden Sie die Daten aus der Quelle und speichern Sie sie im Cache. Gehen Sie niemals davon aus, dass eine Datei in Caches existiert.

Cache-Größe begrenzen

Legen Sie eine maximale Größe für das Caches Directory in Ihrer App fest. Zum Beispiel ein Limit von 50 MB für Bilder und 10 MB für JSON-Antworten. Bei Überschreitung des Limits löschen Sie die ältesten Dateien nach Änderungsdatum.

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
}

Die Befolgung dieser Verfahren stellt sicher, dass die App unabhängig von System-Cache-Bereinigungsaktionen korrekt funktioniert und Benutzer keinen unerwarteten Datenverlust erleiden.

Häufig gestellte Fragen

Benachrichtigt das System die App vor der Bereinigung des Caches Directory?

Nein, iOS sendet keine Benachrichtigungen, bevor es Dateien aus Caches löscht. Der Bereinigungsprozess ist für die App völlig transparent. Die einzige Möglichkeit, eine Löschung zu erfahren, ist beim Versuch, eine Datei zu lesen — FileManager gibt nil zurück oder wirft einen Fehler, und die App muss diese Situation behandeln.

Kann der Benutzer das Caches Directory manuell leeren?

Benutzer haben keinen direkten Zugriff auf das Caches Directory über Files oder iTunes. Sie können jedoch den Cache aller Apps über Einstellungen > Allgemein > Speicher leeren, eine bestimmte App auswählen und auf „App auslagern“ tippen. iOS kann den Cache auch automatisch leeren, wenn der Speicherplatz knapp ist.

Wie unterscheidet sich URLCache vom manuellen Speichern im Caches Directory?

URLCache ist ein integrierter Mechanismus zum Caching von HTTP-Anfragen von Foundation. Er speichert und lädt automatisch zwischengespeicherte Antworten und verwendet dabei intern das Caches Directory. Manuelles Speichern bietet mehr Kontrolle: Sie können das Format wählen, Daten verschlüsseln und die Lebensdauer jeder Datei individuell verwalten.

Was passiert mit dem Caches Directory bei einem App-Update?

Bei einem App-Update über den App Store bleibt das Caches Directory erhalten. Der Inhalt kann jedoch vom System gelöscht werden, wenn das neue Update mehr Platz für die Installation benötigt. Entwickler sollten sich nach einem Update nicht auf die Persistenz von Caches verlassen — dies ist ein weiterer Grund für die Implementierung eines Fallback-Mechanismus.

Wie deaktiviere ich das automatische Caching für NSURLSession?

Setzen Sie URLCache für eine bestimmte NSURLSession-Sitzung auf nil oder verwenden Sie die Caching-Richtlinie .reloadIgnoringLocalCacheData. Sie können auch eine URLSessionConfiguration mit leerem Cache erstellen: sessionConfiguration.urlCache = nil. Dies ist nützlich für Daten, die immer aktuell sein müssen.

Zusammenfassung

  • Caches Directory ist temporärer Speicher für Daten, die aus dem Netzwerk wiederhergestellt oder neu erstellt werden können.
  • Das iOS-System kann jederzeit Dateien aus Caches löschen, ohne die App zu benachrichtigen.
  • Daten aus Caches werden nicht in iCloud- und iTunes-Backups einbezogen, was Platz spart.
  • Der Pfad zum Verzeichnis ist in Swift FileManager.urls(for: .cachesDirectory) oder in Objective-C NSSearchPathForDirectoriesInDomains.
  • In Caches werden zwischengespeicherte Bilder, API-JSON-Antworten und andere wiederherstellbare Daten gespeichert.
  • Im Gegensatz zu tmp kann Caches Daten zwischen Starts erhalten, jedoch ohne Garantie.
  • Überprüfen Sie vor dem Lesen aus Caches immer die Dateiexistenz und implementieren Sie Fallback-Laden.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch