Disk Cache: wat is het, schijfgeheugen iOS en werkingsprincipes

Auteur: IT Sectr Gepubliceerd: 2026-07-11 Leestijd: 7 min

Disk Cache — is een mechanisme voor tijdelijke opslag van gegevens op de schijf van het apparaat, waarmee iOS-apps herhaalde toegang tot eerder geladen bronnen kunnen versnellen. Volgens Apple Developer Documentation, 2024 vermindert Disk Cache het netwerkgebruik, verlaagt het de batterijbelasting en zorgt het voor offline werking van de app. iOS biedt verschillende ingebouwde cachiimechanismen: URLCache voor netwerkverzoeken, NSCache voor werkgeheugen en aangepaste implementaties via de Caches-directory.

Belangrijkste punten

  • Disk Cache — gegevensopslag op schijf voor het versnellen van herhaalde toegang en het verminderen van verkeer
  • URLCache — ingebouwd mechanisme voor het cachen van HTTP-verzoeken in iOS
  • Caches directory — speciale Sandbox-directory voor tijdelijke app-gegevens
  • Cache-invalidatie is cruciaal voor gegevensactualiteit — strategieën op basis van tijd, gebeurtenis en versie
  • Het systeem kan de cache wissen bij ruimtegebrek — de cache mag geen onvervangbare gegevens bevatten

Wat is Disk Cache in iOS?

Disk Cache — is een technologie voor tijdelijke opslag van gegevens op het permanente opslagmedium van het apparaat (flashgeheugen) om volgende verzoeken naar dezelfde gegevens te versnellen. In tegenstelling tot RAM-cache behoudt Disk Cache gegevens na het herstarten van de app en zelfs het apparaat.

iOS biedt twee hoofdniveaus van caching: operationeel (NSCache, geheugen) en schijf (URLCache, bestandssysteem). Schijfcache is 10–100 keer langzamer dan operationele cache, maar aanzienlijk sneller dan een netwerkverzoek — het verschil kan 2 tot 3 ordes van grootte zijn. De optimale strategie gebruikt een tweelaagse cache: geheugen voor hete gegevens en schijf voor koude gegevens.

Volgens de Apple Performance Optimization Guide, 2023 vermindert een correct geconfigureerde Disk Cache de laadtijd van inhoud met 60–80% voor herhaalde weergaven en verlaagt het dataverbruik met 40–70%. Voor apps met mediainhoud (afbeeldingen, video, audio) is caching een kritieke UX-factor.

URLCache: ingebouwd cachingmechanisme

URLCache — is een ingebouwde Foundation-klasse die een gecombineerde cache implementeert voor URLSession-verzoeken. Het slaat automatisch serverreacties op op schijf en in geheugen, en beheert de cachegrootte en invalidatiebeleid op basis van HTTP-headers Cache-Control, Expires en ETag.

swift
import Foundation

let cache = URLCache(
    memoryCapacity: 50 * 1024 * 1024,
    diskCapacity: 200 * 1024 * 1024,
    diskPath: "network-cache"
)

URLCache.shared = cache

let config = URLSessionConfiguration.default
config.urlCache = cache
config.requestCachePolicy = .returnCacheDataElseLoad

let session = URLSession(configuration: config)

Cachingbeleid van URLCache bepaalt wanneer gecachte gegevens moeten worden gebruikt en wanneer een nieuw verzoek moet worden uitgevoerd. Belangrijkste beleidsregels: useProtocolCachePolicy (op basis van serverheaders), reloadIgnoringLocalCacheData (altijd van server), returnCacheDataElseLoad (eerst cache), returnCacheDataDontLoad (alleen cache — offline modus).

Cache-Control — HTTP-header die de server samen met het antwoord stuurt, met max-age (levensduur in seconden), must-revalidate (actualiteit controleren), no-cache (niet gebruiken zonder verificatie) en no-store (niet cachen). iOS houdt zich strikt aan deze headers automatisch bij gebruik van URLCache met het beleid useProtocolCachePolicy.

Aangepaste cachingstrategieën en invalidatie

Aangepaste cache is nodig wanneer de ingebouwde URLCache niet volstaat: voor het opslaan van verwerkte afbeeldingen, geserialiseerde gegevensmodellen of rekenresultaten. In dergelijke gevallen maakt de ontwikkelaar zijn eigen cachiimechanisme op basis van de Caches-directory in de Sandbox van de app.

swift
class DiskCache<T: Codable> {
    private let cacheDir: URL
    private let encoder = JSONEncoder()
    private let decoder = JSONDecoder()

    init() {
        let paths = FileManager.default
            .urls(for: .cachesDirectory,
                     in: .userDomainMask)
        cacheDir = paths[0].appendingPathComponent(
            "data-cache", isDirectory: true
        )
        try? FileManager.default
            .createDirectory(at: cacheDir,
                             withIntermediateDirectories: true)
    }

    func set(value: T, for key: String) {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        if let data = try? encoder.encode(value) {
            try? data.write(to: url)
        }
    }

    func get(for key: String) -> T? {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        guard let data = try? Data(contentsOf: url) else { return nil }
        return try? decoder.decode(T.self, from: data)
    }

    func clearAll() {
        try? FileManager.default
            .removeItem(at: cacheDir)
    }
}

Invalidatiestrategieën van de cache bepalen wanneer opgeslagen gegevens als verouderd worden beschouwd: TTL (Time-To-Live) — gegevens leven een vaste tijd na het schrijven; event-driven — invalidatie bij een gebeurtenis (bijv. gegevensupdate op de server); version-based — invalidatie bij wijziging van API-versie of gegevensformaat; LRU (Least Recently Used) — automatische verwijdering van minst gebruikte items bij overschrijding van de groottebeperking.

Praktische regel: TTL is geschikt voor nieuws en inhoud die voorspelbaar veroudert. Event-driven — voor gegevens die door de server worden beheerd via pushmeldingen. Version-based — voor configuraties en datamodel-cache. LRU — universele keuze voor mediabestanden met beperkte schijfruimte.

Prestaties en beperkingen van de cache

Prestaties van Disk Cache worden gemeten met hit ratio — het percentage verzoeken dat uit de cache wordt bediend zonder netwerktoegang. Typische hit ratio voor een goed geconfigureerde afbeeldingscache is 70–90%, voor API-reacties — 40–60%, voor streaming video — 30–50%.

GegevenstypeTypische hit ratioAanbevolen cachegrootte
Afbeeldingen70–90%100–500 MB
API JSON-reacties40–60%10–50 MB
Video/audio30–50%500 MB — 1 GB
Lettertypen en bronnen90–99%5–20 MB
Webinhoud50–70%50–200 MB

Beperkingen van Disk Cache in iOS: het systeem kan de inhoud van de Caches-directory op elk moment verwijderen bij gebrek aan schijfruimte. Dit gedrag is niet configureerbaar — iOS beslist zelf wanneer en welke cachebestanden worden verwijderd. Daarom mag de cache geen gegevens bevatten die niet uit het netwerk of andere bronnen kunnen worden hersteld.

Impact op flashgeheugen: frequent schrijven naar Disk Cache versnelt de slijtage van flashgeheugen. iOS gebruikt TRIM en wear leveling om slijtage te minimaliseren, maar ontwikkelaars wordt aangeraden overmatig schrijven te vermijden: cache niet vaker dan eens per 5 minuten bijwerken voor hetzelfde bestand; kleine schrijfacties groeperen in één; NSCache gebruiken voor tijdelijke gegevens die niet op schijf hoeven te worden opgeslagen.

Beste praktijken voor caching in iOS

Tweelaagse cache — standaardarchitectuur voor iOS-apps: geheugen (NSCache) voor veelgebruikte gegevens en schijf (URLCache of aangepast) voor gegevens die tussen sessies moeten worden bewaard. Levensduur in geheugen — minuten, op schijf — uren of dagen.

Afbeeldingen cachen: gebruik gespecialiseerde bibliotheken (Kingfisher, SDWebImage, Nuke) die tweelaagse cache implementeren met automatische invalidatie, geheugenbeheer en asynchroon schrijven naar schijf. Zelf een afbeeldingscache implementeren vereist aandacht voor decodering, kleurruimte en schaling.

Cache en beveiliging: cache geen vertrouwelijke gegevens (wachtwoorden, tokens, persoonlijke gegevens) op schijf zonder versleuteling. URLCache versleutelt standaard geen gegevens — gebruik NSFileProtection of versleuteling op app-niveau voor gevoelige inhoud. Gebruik voor netwerkverzoeken met autorisatie het beleid .reloadIgnoringLocalCacheData.

Cachemonitoring: houd hit ratio, huidige cachegrootte en het aantal schrijfbewerkingen per minuut bij. Als hit ratio onder 30% daalt — is de cache inefficiënt en moet de strategie worden herzien of de grootte worden vergroot. Volgens Point-Free (2024) is cachemonitoring een van de meest onderschatte optimalisatiepraktijken voor iOS-app-prestaties.

Veelgestelde vragen

Wat is Disk Cache in iOS?

Disk Cache — technologie voor het opslaan van gegevens op de schijf van het apparaat om herhaalde toegang te versnellen. In iOS cachet de ingebouwde URLCache HTTP-reacties en kunnen ontwikkelaars aangepaste caches maken via de Caches-directory.

Hoe verschilt Disk Cache van RAM Cache?

RAM Cache (NSCache) slaat gegevens op in het werkgeheugen — sneller, maar gaat verloren bij herstarten van de app. Disk Cache is langzamer, maar blijft behouden tussen sessies. De optimale strategie gebruikt beide niveaus: geheugen voor hete gegevens, schijf voor koude gegevens.

Kan iOS mijn cache verwijderen?

Ja, het systeem kan de inhoud van de Caches-directory op elk moment verwijderen bij ruimtegebrek. Bewaar daarom nooit gegevens in de cache die niet kunnen worden hersteld. Gebruik voor gebruikersdocumenten de Documents-directory.

Hoe kies ik de juiste cachegrootte?

De cachegrootte hangt af van het gegevenstype: voor afbeeldingen 100–500 MB, voor API-reacties 10–50 MB, voor video tot 1 GB. Houd de hit ratio bij — als deze onder 50% daalt, vergroot dan de cachegrootte of wijzig de invalidatiestrategie.

Hoe wis ik de cache in een iOS-app?

URLCache.removeAllCachedResponses() wist de ingebouwde cache. Voor aangepaste cache verwijdert u bestanden uit de Caches-directory via FileManager. Bied de gebruiker altijd de mogelijkheid om de cache te wissen in de app-instellingen.

Samenvatting

  • Disk Cache — tijdelijke opslag van gegevens op schijf voor het versnellen van herhaalde toegang en verminderen van verkeer
  • URLCache — ingebouwd Foundation-mechanisme voor het cachen van HTTP-verzoeken met Cache-Control-ondersteuning
  • Caches directory — Sandbox-directory voor tijdelijke gegevens, door het systeem gewist bij ruimtegebrek
  • Invalidatie van de cache gebeurt via TTL, gebeurtenis, versie of LRU — keuze hangt af van het gegevenstype
  • Hit ratio — belangrijkste metric voor cache-efficiëntie: 70%+ voor afbeeldingen, 40–60% voor API
  • Tweelaagse cache (RAM + Schijf) — standaardarchitectuur voor iOS-apps
  • Beveiliging — vertrouwelijke gegevens mogen niet zonder versleuteling op schijf worden gecacht

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