Caches Directory: ce este, gestionarea cache-ului și ștergerea datelor

Autor: IT Sectr Publicat: 2026-07-10 Timp de citire: 10 min

Caches Directory — este un director în sandbox-ul aplicației iOS, destinat stocării datelor temporare care pot fi restaurate sau reîncărcate din rețea. Conform Apple File System Basics (2024), sistemul poate șterge fișierele din Caches Directory în orice moment pentru a elibera spațiu pe disc — aplicația trebuie să gestioneze corect absența acestor fișiere și să le restabilească la nevoie. Spre deosebire de Documents Directory, datele din Caches nu sunt incluse în copiile de rezervă iCloud și iTunes, ceea ce reduce încărcarea stocării în cloud a utilizatorului.

Puncte principale

  • Caches Directory — stocare temporară pentru date care pot fi restaurate din rețea sau recreate.
  • Sistemul iOS poate în orice moment șterge fișierele din Caches când spațiul pe dispozitiv este insuficient.
  • Datele din Caches nu sunt incluse în copiile de rezervă iCloud și iTunes.
  • Calea către director se obține prin NSCachesDirectory sau FileManager.urls(for: .cachesDirectory).
  • Diferența principală față de Documents: Caches nu este destinat datelor utilizatorului a căror pierdere este critică.

Ce este Caches Directory în iOS?

Caches Directory — este un director în interiorul sandbox-ului aplicației iOS, optimizat pentru stocarea datelor care pot fi restaurate la nevoie. Spre deosebire de Documents Directory, Caches nu este destinat datelor utilizatorului — este o stocare temporară pentru accelerarea funcționării aplicației.

iOS folosește Caches Directory pentru plasarea răspunsurilor de rețea stocate în cache, imaginilor preîncărcate, obiectelor serializate și datelor pe care aplicația le poate restaura. Dezvoltatorul nu trebuie să se bazeze pe stocarea pe termen lung a datelor în acest director.

Conform datelor Apple WWDC 2020, aproximativ 40% din aplicațiile iOS folosesc Caches Directory pentru stocarea imaginilor cache și a datelor de rețea, iar 25% dintre dezvoltatori plasează incorect în Caches date care ar trebui să se afle în Documents sau Application Support, din cauza neînțelegerii diferențelor dintre aceste directoare.

Proprietatea critică a Caches: aplicația trebuie să gestioneze corect situația în care fișierul cache a fost șters de sistem. Dacă după ștergerea cache-ului funcționalitatea aplicației este afectată — înseamnă că datele sunt stocate în directorul greșit.

Cum se obține calea către Caches Directory

În Swift, calea către Caches Directory se obține prin metoda standard FileManager cu specificarea .cachesDirectory. Este o operațiune simplă, utilizată practic în fiecare aplicație iOS care lucrează cu date de rețea.

swift
import Foundation

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

// Salvează JSON-ul cache
let cacheFile = cachesURL.appendingPathComponent("feed_cache.json")
let jsonData = try JSONSerialization.data(
    withJSONObject: response,
    options: [.prettyPrinted]
)
try jsonData.write(to: cacheFile)

Objective-C folosește NSSearchPathForDirectoriesInDomains cu NSCachesDirectory. Deși Apple recomandă Swift API, codul Objective-C cu Caches Directory rămâne funcțional și suportat.

objective-c
@import Foundation;

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

Proiectele Swift ar trebui să prefere API-ul bazat pe URL: este sigur din punct de vedere al tipurilor și se integrează mai bine cu framework-urile moderne precum SwiftUI și Combine.

Ce date să stocați în Caches

Caches Directory este optim pentru câteva categorii de date pe care aplicația le folosește pentru a-și accelera funcționarea, dar nu este singura sursă de adevăr. Selectarea corectă a datelor pentru cache influențează direct UX-ul și performanța aplicației.

Răspunsuri de rețea stocate în cache

Răspunsurile JSON de la API, datele fluxurilor de știri, listele de obiecte — tot ce poate aplicația reîncărca de pe server. Folosiți URLCache pentru cache automat al răspunsurilor HTTP sau salvați manual obiecte serializate.

Imagini și fișiere media

Imaginile încărcate din rețea — cel mai frecvent caz de utilizare a Caches Directory. Bibliotecile precum SDWebImage și Kingfisher salvează implicit imaginile cache exact în Caches.

Tip de datePotrivit pentru CachesPerioada de păstrare
JSON răspunsuri APIDaPână la ștergerea de sistem
Imagini din rețeaDaPână la ștergerea de sistem
Jurnale de depanareCondiționatMai bine în tmp
Salvări de jocuriNuDoar Documents
Configurații aplicațieNuApplication Support

Dacă datele nu pot fi restaurate — locul lor nu este în Caches. Acesta este cel mai simplu criteriu: imaginați-vă că mâine sistemul șterge toate fișierele din Caches. Dacă aplicația continuă să funcționeze corect — datele sunt stocate corect.

Cum gestionează sistemul ștergerea cache-ului

iOS gestionează automat ștergerea Caches Directory, dar declanșatoarele și algoritmii exacti nu sunt documentați de Apple. Se știe că sistemul poate șterge fișierele din Caches când spațiul pe disc este insuficient, precum și la funcționarea funcției Offload Unused Apps.

Procesul de ștergere este transparent pentru aplicație: sistemul șterge fișierele fără notificare. Aplicația trebuie să verifice existența fișierului înainte de citire și să îl creeze din nou la absență. A nu se baza pe stocarea pe termen lung — este cerința cheie la lucrul cu Caches.

Conform articolului Apple "File System Basics" (2024), aplicația nu trebuie să conteze că fișierele din Caches Directory vor fi disponibile între sesiuni. Dezvoltatorilor li se recomandă să implementeze un mecanism de fallback: la absența fișierului cache — încărcați datele din rețea și salvați din nou în Caches.

Un scenariu separat — descărcarea aplicației (Offload). La activarea acestei funcții, iOS șterge aplicația dar păstrează Documents Directory. Caches Directory este șters în acest proces. Utilizatorul care a restaurat aplicația nu va primi datele cache — aplicația trebuie să le încarce din nou.

Caches Directory vs Temporary Directory

Diferența dintre Caches și Temporary (tmp) cauzează adesea confuzie printre dezvoltatori. Ambele directoare stochează date temporare, dar cu garanții diferite de durată de viață și scop.

CaracteristicăCaches DirectoryTemporary Directory
Durata de viațăDe la sesiune la sesiune (negarantată)Doar în cadrul sesiunii
Ștergerea de sistemLa spațiu insuficientLa terminarea sesiunii sau repornire
ScopCache pentru accelerareDate foarte temporare
ExempluImagini cacheFișier temporar înainte de export
BackupNuNu

Alegeți Caches dacă datele sunt utile de păstrat între pornirile aplicației, dar pot fi restaurate. Folosiți tmp dacă datele sunt necesare doar în sesiunea curentă și nu au valoare după încheierea aplicației.

Cele mai bune practici de lucru cu Caches

Lucrul cu Caches Directory necesită respectarea câtorva reguli care ajută la evitarea pierderii de date, a comportamentului neașteptat al aplicației și a problemelor de performanță.

Verificați întotdeauna existența fișierului înainte de citire

FileManager.fileExists(atPath:) trebuie apelat înainte de fiecare citire din Caches. Dacă fișierul lipsește — încărcați datele din sursa originală și salvați în cache. Nu presupuneți niciodată că fișierul din Caches există.

Limitați dimensiunea cache-ului

Stabiliți dimensiunea maximă a Caches Directory în aplicație. De exemplu, o limită de 50 MB pentru imagini și 10 MB pentru răspunsuri JSON. La depășirea limitei, ștergeți cele mai vechi fișiere după data modificării.

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 }

    // Enumeră și șterge fișierele vechi
    // la depășirea limitei de dimensiune
}

Respectarea acestor practici garantează că aplicația funcționează corect la orice acțiuni ale sistemului de ștergere a cache-ului, iar utilizatorul nu se confruntă cu pierderea neașteptată a datelor.

Întrebări frecvente

Notifică sistemul aplicația înainte de ștergerea Caches Directory?

Nu, iOS nu trimite notificări înainte de ștergerea fișierelor din Caches. Procesul de ștergere este complet transparent pentru aplicație. Singurul mod de a afla despre ștergere — la încercarea de citire a fișierului, FileManager returnează nil sau aruncă o eroare, iar aplicația trebuie să gestioneze această situație.

Poate utilizatorul să șteargă manual Caches Directory?

Acces direct la Caches Directory prin Files sau iTunes utilizatorul nu are. Cu toate acestea, utilizatorul poate șterge cache-ul tuturor aplicațiilor prin Setări > General > Stocare, selectând o aplicație specifică și apăsând "Descarcă aplicația". De asemenea, iOS poate șterge automat cache-ul la spațiu insuficient.

Cu ce se deosebește URLCache de salvarea manuală în Caches Directory?

URLCache — este un mecanism încorporat de cache a cererilor HTTP din Foundation. Acesta salvează și încarcă automat răspunsurile cache, folosind Caches Directory în culise. Salvarea manuală oferă mai mult control: puteți alege formatul, cripta datele și gestiona durata de viață a fiecărui fișier individual.

Ce se întâmplă cu Caches Directory la actualizarea aplicației?

La actualizarea aplicației prin App Store, Caches Directory este păstrat. Cu toate acestea, conținutul poate fi șters de sistem dacă noua actualizare necesită mai mult spațiu pentru instalare. Dezvoltatorul nu trebuie să se bazeze pe păstrarea Caches după actualizare — acesta este un motiv suplimentar pentru implementarea mecanismului de fallback.

Cum să dezactivați cache-ul automat pentru NSURLSession?

Setați URLCache la nil pentru o sesiune NSURLSession specifică sau folosiți politica de cache .reloadIgnoringLocalCacheData. De asemenea, puteți crea o configurație URLSessionConfiguration cu cache gol: sessionConfiguration.urlCache = nil. Acest lucru este util pentru datele care trebuie să fie întotdeauna actualizate.

Concluzii

  • Caches Directory — stocare temporară pentru date care pot fi restaurate din rețea sau recreate.
  • Sistemul iOS poate în orice moment șterge fișierele din Caches fără notificarea aplicației.
  • Datele din Caches nu sunt incluse în copiile de rezervă iCloud și iTunes, economisind spațiu.
  • Calea către director — FileManager.urls(for: .cachesDirectory) în Swift sau NSSearchPathForDirectoriesInDomains în Objective-C.
  • În Caches se stochează imagini cache, răspunsuri JSON API și alte date restaurate.
  • Spre deosebire de tmp, Caches poate păstra date între porniri, dar fără garanții.
  • Întotdeauna verificați existența fișierului înainte de citirea din Caches și implementați încărcarea fallback.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și