Caches Directory: wat is het, cachebeheer en gegevens opschonen

Auteur: IT Sectr Gepubliceerd: 2026-07-10 Leestijd: 10 min

Caches Directory — is een map in de sandbox van een iOS-app, bedoeld voor het opslaan van tijdelijke gegevens die kunnen worden hersteld of opnieuw uit het netwerk kunnen worden geladen. Volgens Apple File System Basics (2024) kan het systeem op elk moment bestanden uit de Caches Directory verwijderen om schijfruimte vrij te maken — de app moet de afwezigheid van deze bestanden correct afhandelen en ze indien nodig herstellen. In tegenstelling tot de Documents Directory worden gegevens uit Caches niet opgenomen in iCloud- en iTunes-back-ups, wat de belasting van de cloudopslag van de gebruiker vermindert.

Belangrijkste punten

  • Caches Directory — tijdelijke opslag voor gegevens die uit het netwerk kunnen worden hersteld of opnieuw kunnen worden aangemaakt.
  • Het iOS-systeem kan op elk moment bestanden uit Caches verwijderen bij gebrek aan ruimte op het apparaat.
  • Gegevens uit Caches worden niet opgenomen in iCloud- en iTunes-back-ups.
  • Het pad naar de map wordt verkregen via NSCachesDirectory of FileManager.urls(for: .cachesDirectory).
  • Het belangrijkste verschil met Documents: Caches is niet bedoeld voor gebruikersgegevens waarvan verlies kritiek is.

Wat is Caches Directory in iOS?

Caches Directory — is een map in de sandbox van een iOS-app, geoptimaliseerd voor het opslaan van gegevens die indien nodig kunnen worden hersteld. In tegenstelling tot de Documents Directory is Caches niet bedoeld voor gebruikersgegevens — het is tijdelijke opslag om de werking van de app te versnellen.

iOS gebruikt de Caches Directory voor het plaatsen van gecachete netwerkreacties, vooraf geladen afbeeldingen, geserialiseerde objecten en gegevens die de app kan herstellen. De ontwikkelaar mag niet vertrouwen op langdurige opslag van gegevens in deze map.

Volgens gegevens van Apple WWDC 2020 gebruikt ongeveer 40% van de iOS-apps de Caches Directory voor het opslaan van gecachete afbeeldingen en netwerkgegevens, terwijl 25% van de ontwikkelaars ten onrechte gegevens in Caches plaatst die in Documents of Application Support zouden moeten staan, door onbegrip van de verschillen tussen deze mappen.

Kritieke eigenschap van Caches: de app moet correct omgaan met de situatie waarin een cachebestand door het systeem is verwijderd. Als na het verwijderen van de cache de functionaliteit van de app wordt verstoord — betekent dit dat de gegevens in de verkeerde map worden opgeslagen.

Hoe verkrijg ik het pad naar Caches Directory

In Swift wordt het pad naar de Caches Directory verkregen via de standaard FileManager-methode met .cachesDirectory. Dit is een eenvoudige handeling die in vrijwel elke iOS-app die met netwerkgegevens werkt, wordt gebruikt.

swift
import Foundation

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

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

Objective-C gebruikt NSSearchPathForDirectoriesInDomains met NSCachesDirectory. Hoewel Apple de Swift API aanbeveelt, blijft Objective-C-code met Caches Directory werkend en ondersteund.

objective-c
@import Foundation;

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

Swift-projecten moeten de voorkeur geven aan URL-gebaseerde API: deze is typeveilig en integreert beter met moderne frameworks zoals SwiftUI en Combine.

Welke gegevens opslaan in Caches

Caches Directory is optimaal voor verschillende categorieën gegevens die de app gebruikt om de werking te versnellen, maar is niet de enige bron van waarheid. De juiste keuze van gegevens om te cachen beïnvloedt direct de UX en prestaties van de app.

Gecachete netwerkreacties

JSON-reacties van API's, nieuwsfeedgegevens, objectlijsten — alles wat de app opnieuw van de server kan laden. Gebruik URLCache voor automatisch cachen van HTTP-reacties of sla handmatig geserialiseerde objecten op.

Afbeeldingen en mediabestanden

Afbeeldingen geladen uit het netwerk — het meest voorkomende gebruik van Caches Directory. Bibliotheken zoals SDWebImage en Kingfisher slaan standaard gecachete afbeeldingen precies in Caches op.

GegevenstypeGeschikt voor CachesBewaringstermijn
JSON API-reactiesJaTot systeemopschoning
Afbeeldingen uit netwerkJaTot systeemopschoning
Logbestanden debuggenVoorwaardelijkBeter in tmp
Game savesNeeAlleen Documents
Configuraties appNeeApplication Support

Als gegevens niet kunnen worden hersteld — is hun plaats niet in Caches. Dit is het eenvoudigste criterium: stel je voor dat het systeem morgen alle bestanden uit Caches verwijdert. Als de app correct blijft werken — worden de gegevens correct opgeslagen.

Hoe beheert het systeem het opschonen van de cache

iOS beheert automatisch het opschonen van de Caches Directory, maar de exacte triggers en algoritmen zijn niet gedocumenteerd door Apple. Het is bekend dat het systeem bestanden uit Caches kan verwijderen bij gebrek aan schijfruimte, evenals bij het gebruik van de functie Offload Unused Apps.

Het opschoningsproces is transparant voor de app: het systeem verwijdert bestanden zonder kennisgeving. De app moet het bestaan van het bestand controleren voor het lezen en het opnieuw aanmaken bij afwezigheid. Niet vertrouwen op langdurige opslag — is de belangrijkste vereiste bij het werken met Caches.

Volgens Apple's artikel "File System Basics" (2024) mag de app er niet op rekenen dat bestanden in de Caches Directory beschikbaar zijn tussen sessies. Ontwikkelaars wordt aangeraden een fallback-mechanisme te implementeren: bij afwezigheid van een cachebestand — laad de gegevens uit het netwerk en sla ze opnieuw op in Caches.

Een apart scenario — het offloaden van de app (Offload). Bij activering van deze functie verwijdert iOS de app maar behoudt de Documents Directory. De Caches Directory wordt daarbij verwijderd. Een gebruiker die de app heeft hersteld, krijgt de gecachete gegevens niet — de app moet ze opnieuw laden.

Caches Directory vs Temporary Directory

Het verschil tussen Caches en Temporary (tmp) veroorzaakt vaak verwarring bij ontwikkelaars. Beide mappen slaan tijdelijke gegevens op, maar met verschillende garanties voor levensduur en doel.

KenmerkCaches DirectoryTemporary Directory
LevensduurVan sessie tot sessie (niet gegarandeerd)Alleen binnen de sessie
SysteemopschoningBij ruimtegebrekBij beëindiging sessie of herstart
DoelCache voor versnellingZeer tijdelijke gegevens
VoorbeeldGecachete afbeeldingenTijdelijk bestand voor export
Back-upNeeNee

Kies Caches als het nuttig is om gegevens te bewaren tussen het opstarten van de app, maar ze kunnen worden hersteld. Gebruik tmp als gegevens alleen nodig zijn in de huidige sessie en geen waarde hebben na het beëindigen van de app.

Beste praktijken voor werken met Caches

Werken met Caches Directory vereist het naleven van een aantal regels die helpen gegevensverlies, onverwacht gedrag van de app en prestatieproblemen te voorkomen.

Controleer altijd het bestaan van het bestand voor het lezen

FileManager.fileExists(atPath:) moet worden aangeroepen voor elke leesbewerking uit Caches. Als het bestand ontbreekt — laad de gegevens uit de oorspronkelijke bron en sla ze op in de cache. Ga er nooit van uit dat een bestand uit Caches bestaat.

Beperk de cachegrootte

Stel een maximale grootte in voor de Caches Directory in de app. Bijvoorbeeld een limiet van 50 MB voor afbeeldingen en 10 MB voor JSON-reacties. Bij overschrijding van de limiet verwijder je de oudste bestanden op wijzigingsdatum.

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 }

    // Oude bestanden opsommen en verwijderen
    // bij overschrijding van de groottebeperking
}

Het naleven van deze praktijken garandeert dat de app correct werkt bij alle acties van het systeem voor cache-opschoning en dat de gebruiker niet wordt geconfronteerd met onverwacht gegevensverlies.

Veelgestelde vragen

Stelt het systeem de app op de hoogte voor het opschonen van de Caches Directory?

Nee, iOS stuurt geen meldingen voor het verwijderen van bestanden uit Caches. Het opschoningsproces is volledig transparant voor de app. De enige manier om van verwijdering op de hoogte te raken — bij het lezen van het bestand retourneert FileManager nil of geeft een fout, en de app moet deze situatie afhandelen.

Kan de gebruiker handmatig de Caches Directory opschonen?

Directe toegang tot Caches Directory via Files of iTunes heeft de gebruiker niet. De gebruiker kan echter de cache van alle apps opschonen via Instellingen > Algemeen > Opslag, door een specifieke app te selecteren en op "Ontlaad app" te drukken. Ook kan iOS automatisch de cache opschonen bij ruimtegebrek.

Wat is het verschil tussen URLCache en handmatig opslaan in Caches Directory?

URLCache — is een ingebouwd mechanisme voor het cachen van HTTP-verzoeken van Foundation. Het slaat automatisch gecachete reacties op en laadt ze, met de Caches Directory onder de motorkap. Handmatig opslaan geeft meer controle: je kunt het formaat kiezen, gegevens versleutelen en de levensduur van elk bestand individueel beheren.

Wat gebeurt er met de Caches Directory bij het bijwerken van de app?

Bij het bijwerken van de app via de App Store blijft de Caches Directory behouden. De inhoud kan echter door het systeem worden verwijderd als de nieuwe update meer ruimte nodig heeft voor installatie. De ontwikkelaar mag niet vertrouwen op het behoud van Caches na een update — dit is een extra reden voor het implementeren van een fallback-mechanisme.

Hoe kan ik automatisch cachen voor NSURLSession uitschakelen?

Stel URLCache in op nil voor een specifieke NSURLSession-sessie of gebruik het cachebeleid .reloadIgnoringLocalCacheData. Je kunt ook een URLSessionConfiguration-configuratie maken met een lege cache: sessionConfiguration.urlCache = nil. Dit is handig voor gegevens die altijd actueel moeten zijn.

Samenvatting

  • Caches Directory — tijdelijke opslag voor gegevens die uit het netwerk kunnen worden hersteld of opnieuw kunnen worden aangemaakt.
  • Het iOS-systeem kan op elk moment bestanden uit Caches verwijderen zonder de app te waarschuwen.
  • Gegevens uit Caches worden niet opgenomen in iCloud- en iTunes-back-ups, wat ruimte bespaart.
  • Het pad naar de map — FileManager.urls(for: .cachesDirectory) in Swift of NSSearchPathForDirectoriesInDomains in Objective-C.
  • In Caches worden gecachete afbeeldingen, JSON API-reacties en andere herstelbare gegevens opgeslagen.
  • In tegenstelling tot tmp kan Caches gegevens bewaren tussen het opstarten, maar zonder garanties.
  • Controleer altijd het bestaan van het bestand voor het lezen uit Caches en implementeer fallback-laden.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook