Directorul cache al aplicației — ce este, scopul și cum să ștergeți în dezvoltarea mobilă

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

Directorul cache al aplicației este o stocare temporară de date care pot fi recreate la următoarea utilizare. Potrivit Android Developers, 2026, sistemul poate șterge fișierele din acest director atunci când memoria este insuficientă, fără avertisment, prin urmare aplicația nu trebuie să se bazeze pe păstrarea cache-ului pentru datele critice. Utilizarea corectă a directorului cache reduce spațiul ocupat și accelerează încărcarea conținutului.

Principalele

  • Cache Directory — stocare temporară pentru fișiere care pot fi recreate, nu este destinată datelor permanente
  • Android oferă context.cacheDir și context.externalCacheDir pentru stocarea cache-ului în memoria internă și externă
  • iOS utilizează NSCachesDirectory, care este exclus automat din copia de rezervă iCloud
  • Sistemul poate goli cache-ul în orice moment — datele critice stocați-le în Internal Storage
  • Ștergerea manuală a cache-ului prin setările aplicației crește încrederea utilizatorilor și îmbunătățește recenziile

Ce este directorul cache al aplicației?

Directorul cache este un director special în memoria internă (sau externă) a aplicației, destinat fișierelor temporare. Diferența principală față de Internal Storage: sistemul are dreptul să șteargă fișierele din cache fără notificare, dacă dispozitivului îi lipsește spațiul liber. Prin urmare, aplicația nu trebuie să stocheze niciodată în cache singura copie a datelor importante ale utilizatorului. Cache-ul este optim pentru imagini descărcate, răspunsuri ale serverului, resurse precompilate și orice alte date care pot fi restaurate de la distanță sau recreate programatic.

Pe Android, directorul cache se află la calea /data/data/<pachet>/cache/ și este accesibil prin context.cacheDir. Dimensiunea cache-ului nu este limitată explicit, dar Google Play recomandă să nu depășească 100 MB, deoarece aplicațiile cu cache mare primesc recenzii negative de la utilizatori. Pe iOS, directorul cache se află în interiorul containerului Sandbox la calea Library/Caches/ și este accesibil prin NSCachesDirectory. iOS poate șterge fișierele din Caches la restaurarea dispozitivului dintr-o copie de rezervă sau la lipsa critică de spațiu — utilizatorii trebuie avertizați despre acest lucru în documentația aplicației.

Înțelegerea datelor care pot fi plasate în siguranță în cache și a celor care trebuie stocate în Internal Storage sau Documents este o abilitate cheie a dezvoltatorului. Utilizarea incorectă a cache-ului duce la două probleme opuse: fie aplicația ocupă prea mult spațiu (dacă dezvoltatorul stochează în cache ceea ce ar trebui să fie în Documents), fie utilizatorul pierde date (dacă dezvoltatorul stochează în cache ceea ce ar trebui să fie permanent). Urmați o regulă simplă: dacă datele pot fi restaurate — cache, dacă restaurarea este imposibilă — Internal Storage sau Documents.

Scopul și tipurile datelor stocate în cache

Diferite tipuri de date au viteze de recreare și cerințe de volum diferite. Înțelegerea acestor caracteristici ajută dezvoltatorul să aleagă corect ce fișiere să plaseze în cache și care în stocarea permanentă.

Cache pentru imagini și fișiere media

Cel mai comun tip de date stocate în cache sunt imaginile descărcate din rețea. Bibliotecile Glide, Picasso și Coil salvează automat imaginile descărcate în directorul cache al aplicației. Dimensiunea tipică a cache-ului de imagini în aplicațiile sociale este între 50 și 200 MB. Dimensiunea cache-ului depinde de rezoluția ecranului dispozitivului și de cantitatea de conținut vizualizat. Glide utilizează caching pe două niveluri: mai întâi verifică cache-ul L1 în memoria RAM (algoritmul LRU), apoi cache-ul L2 pe disc. Aceasta asigură încărcarea rapidă a imaginilor revizuite fără o nouă solicitare în rețea. Configurarea dimensiunii maxime a cache-ului pe disc prin DiskCacheStrategy permite controlul spațiului ocupat: la depășirea limitei, biblioteca șterge automat cele mai puțin utilizate fișiere.

kotlin
val cacheDir = File(context.cacheDir, "image_cache")
val maxSize = 50 * 1024 * 1024 // 50 MB

val cache = DiskLruCache.open(cacheDir, 1, 1, maxSize)
cache.edit("key")?.let { editor ->
    editor.newOutputStream(0).use { stream ->
        // scrierea datelor în cache
    }
}

Cache pentru cereri de rețea

Răspunsurile cererilor API pot fi stocate în cache pentru acces offline și reducerea încărcării serverului. OkHttp oferă suport integrat pentru caching prin clasa Cache. Anteturile de răspuns Cache-Control și ETag gestionează politica de caching: serverul specifică cât timp răspunsul este considerat actual. Cu o configurare corectă, cache-ul cererilor de rețea poate reduce timpul de încărcare a datelor cu 60–80% la vizitele repetate și poate asigura funcționalitatea de bază a aplicației fără conexiune la internet. Dimensiunea cache-ului cererilor de rețea rareori depășește 10–20 MB, dar la utilizarea activă a aplicației poate atinge 50 MB. Configurați dimensiunea maximă a cache-ului prin constructorul OkHttpClient.Builder și verificați actualitatea datelor stocate în cache la fiecare pornire a aplicației.

Cache pentru baze de date și date precompilate

Bazele de date SQLite pot genera fișiere temporare în timpul funcționării: fișiere WAL (Write-Ahead Log), jurnale de revenire și pagini de index. Aceste fișiere sunt stocate lângă baza de date principală, dar pentru bazele de date temporare (de exemplu, căutare full-text sau analitică) se poate specifica amplasarea în directorul cache. Programele de shader precompilate OpenGL și Vulkan sunt, de asemenea, stocate în cache în acest director, ceea ce accelerează prima încărcare a scenelor grafice. Pe iOS, NSCachesDirectory este recomandat pentru stocarea datelor precompilate Core Data și a fișierelor temporare de procesare a imaginilor.

Cum funcționează ștergerea cache-ului pe Android și iOS

Ștergerea cache-ului poate avea loc automat (de către sistem) sau manual (de către utilizator sau aplicație). Înțelegerea comportamentului sistemului în diferite scenarii este necesară pentru prevenirea pierderii de date.

Ștergerea automată de către sistem

Pe Android, sistemul inițiază procesul de ștergere a cache-ului atunci când cantitatea de spațiu liber pe partiția /data scade sub pragul critic (de obicei 500 MB). Procesul cacheflush analizează dimensiunea cache-ului tuturor aplicațiilor instalate și șterge cele mai puțin utilizate fișiere, începând cu cele mai vechi. Utilizatorul poate, de asemenea, să șteargă manual cache-ul tuturor aplicațiilor prin setările sistemului: „Setări → Stocare → Cache → Șterge cache-ul". Pe iOS, ștergerea automată a Caches are loc la restaurarea dispozitivului dintr-o copie de rezervă — iOS nu restaurează conținutul Library/Caches/. În plus, iOS poate șterge selectiv fișiere din Caches atunci când spațiul liber de pe dispozitiv se termină, folosind mecanismul purgeable storage pentru date izolate.

swift
let fm = FileManager.default
let cachesURL = fm.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first!

let contents = try fm.contentsOfDirectory(
    at: cachesURL,
    includingPropertiesForKeys: nil
)
for fileURL in contents {
    try fm.removeItem(at: fileURL)
}

Ștergerea programatică a cache-ului de către aplicație

Dezvoltatorul poate implementa ștergerea programatică a cache-ului la cererea utilizatorului sau conform unui program. Pe Android, pentru a șterge propriul cache, este suficient să ștergeți toate fișierele din context.cacheDir și context.externalCacheDir. Pe iOS, puteți șterge conținutul Library/Caches/, dar nu ștergeți directorul în sine — doar conținutul său. Se recomandă să afișați utilizatorului dimensiunea actuală a cache-ului în setările aplicației și un buton „Șterge cache-ul" cu confirmare. Conform Google Play Console, aplicațiile cu buton de ștergere a cache-ului primesc cu 22% mai puține plângeri privind lipsa de spațiu comparativ cu aplicațiile fără această funcție. Ștergerea cache-ului trebuie să fie sigură: aplicația trebuie să gestioneze corect situația în care fișierele stocate în cache au fost șterse și să le reîncarce transparent la următoarea accesare.

Diferențele între cacheDir pe Android și iOS

În ciuda aceluiași scop, implementarea directoarelor cache pe Android și iOS are diferențe semnificative. Dezvoltatorul trebuie să le ia în considerare pentru funcționarea corectă a aplicației pe ambele platforme.

CaracteristicăAndroidiOS
Calea implicită/data/data/<pachet>/cache/Library/Caches/
API de accescontext.cacheDirNSCachesDirectory
Cache externcontext.externalCacheDirLipsește
Copie de rezervăNu se face backupNu se face backup
Ștergere de către sistemLa lipsa de spațiuLa restaurarea din copie de rezervă și lipsa de spațiu
Vizibilitate pentru utilizatorÎn setările aplicațieiDoar la conectarea la computer

Android oferă un director cache extern separat prin context.externalCacheDir — acesta se află pe cardul SD (dacă este instalat) și nu este șters la dezinstalarea aplicației. Acest lucru este convenabil pentru fișiere media mari, dar creează riscul de a lăsa gunoi pe cardul de memorie. iOS nu are conceptul de cache extern: toate fișierele temporare sunt stocate în interiorul containerului Sandbox și sunt garantat șterse la dezinstalare. Pe Android, cache-ul este vizibil utilizatorului în setările aplicației și acesta poate să-l șteargă manual. Pe iOS, setările sistemului nu afișează dimensiunea cache-ului aplicațiilor individuale — utilizatorul poate șterge cache-ul doar prin ștergerea și reinstalarea aplicației, dacă dezvoltatorul nu a adăugat un buton de ștergere în interfață.

O diferență importantă — comportamentul la restaurare. Pe iOS, la restaurarea din copia de rezervă iTunes sau iCloud, directorul Caches nu este restaurat, deoarece iOS consideră că datele stocate în cache vor fi recreate la prima pornire. Pe Android, la restaurarea din Google Drive, doar Internal Storage este arhivat — cache-ul rămâne gol după restaurare. În ambele cazuri, aplicația trebuie să funcționeze corect cu cache-ul gol, fără a afișa erori utilizatorului și fără a pierde funcționalitatea.

Recomandări pentru gestionarea cache-ului

Gestionarea competentă a cache-ului aplicației este unul dintre factorii care influențează experiența utilizatorului și ratingul aplicației. Următoarele recomandări vor ajuta la evitarea problemelor tipice și la creșterea satisfacției utilizatorilor.

  • Stabiliți o limită de dimensiune pentru cache. Utilizați DiskLruCache sau biblioteci similare cu specificarea volumului maxim în megabiți. La depășirea limitei, biblioteca șterge automat cele mai puțin utilizate fișiere
  • Implementați un buton de ștergere a cache-ului în setările aplicației. Afișați dimensiunea actuală a cache-ului (în format „12.5 MB") și solicitați confirmarea înainte de ștergere. După ștergere, actualizați dimensiunea afișată
  • Nu stocați în cache fișiere care nu pot fi restaurate. Dacă datele sunt critice pentru funcționarea aplicației, stocați-le în Internal Storage (Android) sau Documents (iOS), iar în cache plasați doar o copie pentru acces rapid
  • Verificați disponibilitatea cache-ului extern înainte de scriere. Pe Android, context.externalCacheDir poate returna null dacă cardul SD nu este instalat sau indisponibil. Prevedeți întotdeauna un fallback la cache-ul intern
  • Utilizați o politică de expirare (TTL) pentru datele stocate în cache. Nu păstrați fișierele mai mult decât este necesar: pentru imagini — 24–48 de ore, pentru răspunsuri API — de la 5 minute la 1 oră, în funcție de frecvența actualizării datelor

Monitorizați regulat dimensiunea cache-ului în analitica aplicației. Integrați trimiterea metricii dimensiunii cache-ului în Firebase Analytics sau un sistem similar. Dacă dimensiunea medie a cache-ului depășește 100 MB, optimizați strategia de caching: reduceți TTL pentru datele rar utilizate, implementați compresia imaginilor înainte de stocarea în cache (WebP în loc de PNG, reducerea calității JPEG la 85%), utilizați paginarea pentru încărcarea conținutului de pe server. Amintiți-vă că utilizatorii cu dispozitive de 16–32 GB sunt deosebit de sensibili la dimensiunea aplicației: la atingerea a 200 MB de cache, mulți utilizatori încep să caute o modalitate de ștergere sau pur și simplu șterg aplicația. Conform unui sondaj Google, 38% dintre utilizatori au șters cel puțin o aplicație din cauza creșterii necontrolate a cache-ului și a spațiului ocupat.

Întrebări frecvente

Voi pierde datele dacă șterg cache-ul aplicației?

Nu, ștergerea cache-ului elimină doar fișierele temporare (imagini salvate, răspunsuri ale serverului). Datele utilizatorului (parole, setări, baze de date) sunt stocate în Internal Storage și nu sunt afectate la ștergerea cache-ului.

Care este dimensiunea maximă recomandată a cache-ului pentru o aplicație mobilă?

Google Play recomandă să nu depășească 100 MB. Pentru aplicațiile cu conținut media intensiv (rețele sociale, mesagerie) este permis până la 200 MB, cu condiția implementării ștergerii automate și a stabilirii limitei prin cache discret.

Șterge iOS automat cache-ul aplicației?

Da, iOS poate șterge fișierele din Library/Caches la lipsa de spațiu sau restaurarea dintr-o copie de rezervă. Sistemul utilizează mecanismul purgeable storage pentru ștergerea automată a datelor necritice.

Care este diferența dintre cacheDir și externalCacheDir pe Android?

cacheDir se află în memoria internă a dispozitivului și este șters la dezinstalarea aplicației. externalCacheDir este situat pe cardul SD și poate rămâne după ștergere — trebuie curățat manual prin cod la prima pornire după reinstalare.

Cum gestionează bibliotecile de încărcare a imaginilor cache-ul?

Bibliotecile precum Glide, Picasso și Coil utilizează caching pe două niveluri: L1 — memoria RAM (cache LRU pentru acces instantaneu), L2 — discul (directorul cache al aplicației). Cache-ul pe disc are o limită de dimensiune configurabilă și o politică de ștergere a fișierelor vechi.

Rezumat

  • Cache Directory — stocare temporară pentru date care pot fi recreate, sistemul le poate șterge fără avertisment la lipsa de spațiu
  • Android oferă cacheDir (memorie internă) și externalCacheDir (card SD) — ambele directoare nu sunt arhivate și pot fi șterse de sistem
  • iOS utilizează Library/Caches, exclus automat din copia de rezervă iCloud și iTunes
  • Tipuri de date stocate în cache — imagini (L2 al bibliotecilor), răspunsuri API (OkHttp Cache), resurse precompilate (shadere, baze de date temporare)
  • Limită de dimensiune a cache-ului — nu mai mult de 100–200 MB cu ștergerea automată a fișierelor vechi prin DiskLruCache sau un mecanism similar
  • Butonul de ștergere a cache-ului în setările aplicației reduce numărul de recenzii negative și crește încrederea utilizatorilor
  • Datele critice nu le stocați niciodată în cache — utilizați Internal Storage (Android) sau Documents Directory (iOS) pentru stocarea permanentă

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