Directory Cache dell'App — Cos'è, Scopo e Come Pulirla nello Sviluppo Mobile

Autore: IT Sectr Pubblicato: 2026-03-13 Tempo di lettura: 10 min

La directory cache dell'applicazione è un archivio temporaneo di dati che possono essere ricreati al successivo utilizzo. Secondo Android Developers, 2026, il sistema può eliminare i file da questa directory in caso di memoria insufficiente senza preavviso, quindi l'applicazione non deve fare affidamento sulla conservazione della cache per dati criticamente importanti. L'uso corretto della directory cache riduce lo spazio occupato e accelera il caricamento dei contenuti.

Punti Chiave

  • Directory Cache — archivio temporaneo di file che possono essere ricreati, non destinato a dati permanenti
  • Android fornisce context.cacheDir e context.externalCacheDir per archiviare la cache su memoria interna ed esterna
  • iOS utilizza NSCachesDirectory, che viene automaticamente escluso dai backup iCloud
  • Il sistema può pulire la cache in qualsiasi momento — archivia i dati critici in Internal Storage
  • La pulizia manuale della cache tramite le impostazioni dell'app aumenta la fiducia degli utenti e migliora le recensioni

Cos'è la Directory Cache di un'Applicazione?

La directory cache è una directory speciale nella memoria interna (o esterna) dell'applicazione progettata per file temporanei. La differenza principale rispetto a Internal Storage: il sistema ha il diritto di eliminare file dalla cache senza preavviso se il dispositivo ha poco spazio libero. Pertanto, l'applicazione non deve mai memorizzare l'unica copia dei dati importanti dell'utente nella cache. La cache è ottimale per immagini scaricate, risposte del server, risorse precompilate e qualsiasi altro dato che può essere ripristinato da remoto o ricreato programmaticamente.

Su Android, la directory cache si trova in /data/data/<package>/cache/ ed è accessibile tramite context.cacheDir. La dimensione della cache non è esplicitamente limitata, ma Google Play raccomanda di non superare i 100 MB, poiché le app con cache grande ricevono recensioni negative dagli utenti. Su iOS, la directory cache si trova all'interno del contenitore Sandbox in Library/Caches/ ed è accessibile tramite NSCachesDirectory. iOS può eliminare file da Caches quando si ripristina il dispositivo da un backup o in caso di grave mancanza di spazio — gli utenti devono essere informati di ciò nella documentazione dell'app.

Capire quali dati possono essere inseriti in modo sicuro nella cache e quali devono essere archiviati in Internal Storage o Documents è una competenza chiave dello sviluppatore. L'uso errato della cache porta a due problemi opposti: o l'app occupa troppo spazio (se lo sviluppatore memorizza nella cache ciò che dovrebbe essere in Documents) o l'utente perde dati (se lo sviluppatore memorizza nella cache ciò che dovrebbe essere conservato permanentemente). Segui una regola semplice: se i dati possono essere recuperati — cache, se il recupero è impossibile — Internal Storage o Documents.

Scopo e Tipi di Dati Memorizzati nella Cache

Diversi tipi di dati hanno velocità di ricreazione e requisiti di spazio differenti. Comprendere queste caratteristiche aiuta lo sviluppatore a scegliere correttamente quali file inserire nella cache e quali nell'archivio permanente.

Cache di Immagini e File Multimediali

Il tipo più comune di dati memorizzati nella cache sono le immagini scaricate dalla rete. Le librerie Glide, Picasso e Coil salvano automaticamente le immagini scaricate nella directory cache dell'app. La dimensione tipica della cache delle immagini nelle app social varia da 50 a 200 MB. La dimensione della cache dipende dalla risoluzione dello schermo del dispositivo e dalla quantità di contenuto visualizzato. Glide utilizza una cache a due livelli: prima controlla la cache L1 nella RAM (algoritmo LRU), poi la cache L2 su disco. Ciò garantisce un caricamento rapido delle immagini visualizzate ripetutamente senza una richiesta di rete aggiuntiva. La configurazione della dimensione massima della cache su disco tramite DiskCacheStrategy consente di controllare lo spazio occupato: quando il limite viene superato, la libreria rimuove automaticamente i file meno utilizzati.

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 ->
        // scrivere dati nella cache
    }
}

Cache delle Richieste di Rete

Le risposte alle richieste API possono essere memorizzate nella cache per l'accesso offline e per ridurre il carico del server. OkHttp fornisce supporto integrato per la cache tramite la classe Cache. Le intestazioni di risposta Cache-Control e ETag gestiscono la politica di caching: il server specifica per quanto tempo la risposta è considerata valida. Con una configurazione appropriata, la cache delle richieste di rete può ridurre il tempo di caricamento dei dati del 60–80% nelle visite ripetute e fornire funzionalità di base dell'app senza connessione Internet. La dimensione della cache delle richieste di rete raramente supera i 10–20 MB, ma con un uso intensivo dell'app può raggiungere i 50 MB. Configura la dimensione massima della cache tramite il costruttore OkHttpClient.Builder e verifica la validità dei dati memorizzati nella cache a ogni avvio dell'app.

Cache di Database e Dati Precompilati

I database SQLite possono generare file temporanei durante il funzionamento: file WAL (Write-Ahead Log), journal di rollback e pagine di indice. Questi file vengono archiviati insieme al database principale, ma per database temporanei (ad esempio, ricerca full-text o analytics) è possibile specificare la posizione nella directory cache. I programmi shader precompilati OpenGL e Vulkan vengono anch'essi memorizzati nella cache in questa directory, accelerando il primo caricamento delle scene grafiche. Su iOS, NSCachesDirectory è raccomandato per archiviare dati precompilati di Core Data e file temporanei di elaborazione delle immagini.

Come Funziona la Pulizia della Cache su Android e iOS

La pulizia della cache può avvenire automaticamente (dal sistema) o manualmente (dall'utente o dall'app). Comprendere il comportamento del sistema in diversi scenari è necessario per prevenire la perdita di dati.

Pulizia Automatica da Parte del Sistema

Su Android, il sistema avvia il processo di pulizia della cache quando lo spazio libero sulla partizione /data scende al di sotto di una soglia critica (di solito 500 MB). Il processo cacheflush analizza la dimensione della cache di tutte le app installate e rimuove i file meno utilizzati, iniziando dai più vecchi. L'utente può anche pulire manualmente la cache di tutte le app tramite le impostazioni di sistema: “Impostazioni → Archiviazione → Cache → Pulisci cache.” Su iOS, la pulizia automatica di Caches avviene quando si ripristina il dispositivo da un backup — iOS non ripristina il contenuto di Library/Caches/. Inoltre, iOS può eliminare selettivamente file da Caches quando lo spazio libero si esaurisce, utilizzando il meccanismo di archiviazione purgabile per dati isolati.

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)
}

Pulizia Programmata della Cache da Parte dell'App

Lo sviluppatore può implementare la pulizia programmata della cache su richiesta dell'utente o secondo una pianificazione. Su Android, per pulire la cache dell'app stessa, basta eliminare tutti i file in context.cacheDir e context.externalCacheDir. Su iOS, pulisci il contenuto di Library/Caches/ ma non eliminare la directory stessa — solo il suo contenuto. Si raccomanda di mostrare all'utente la dimensione corrente della cache nelle impostazioni dell'app insieme a un pulsante “Pulisci cache” con conferma. Secondo Google Play Console, le app con un pulsante di pulizia della cache ricevono il 22% in meno di reclami sulla mancanza di spazio rispetto alle app senza questa funzione. La pulizia della cache deve essere sicura: l'app deve gestire correttamente la situazione in cui i file memorizzati nella cache vengono eliminati e ricaricarli in modo trasparente al prossimo accesso.

Differenze Tra cacheDir su Android e iOS

Nonostante lo stesso scopo, l'implementazione delle directory cache su Android e iOS presenta differenze significative. Lo sviluppatore deve tenerne conto per il corretto funzionamento dell'app su entrambe le piattaforme.

CaratteristicaAndroidiOS
Percorso predefinito/data/data/<package>/cache/Library/Caches/
API di accessocontext.cacheDirNSCachesDirectory
Cache esternacontext.externalCacheDirNon disponibile
BackupNon sottoposto a backupNon sottoposto a backup
Pulizia del sistemaQuando manca spazioAl ripristino da backup e quando manca spazio
Visibilità all'utenteNelle impostazioni dell'appSolo quando connesso a un computer

Android fornisce una directory cache esterna separata tramite context.externalCacheDir — si trova sulla scheda SD (se installata) e non viene eliminata quando si disinstalla l'app. Questo è comodo per file multimediali di grandi dimensioni, ma crea il rischio di lasciare residui sulla scheda di memoria. iOS non ha il concetto di cache esterna: tutti i file temporanei vengono archiviati all'interno del contenitore Sandbox e vengono eliminati garantitamente alla disinstallazione. Su Android, la cache è visibile all'utente nelle impostazioni dell'app e questi può pulirla manualmente. Su iOS, le impostazioni di sistema non mostrano la dimensione della cache delle singole app — l'utente può pulire la cache solo eliminando e reinstallando l'app, a meno che lo sviluppatore non abbia aggiunto un pulsante di pulizia nell'interfaccia.

Una differenza importante — il comportamento al ripristino. Su iOS, quando si ripristina da un backup di iTunes o iCloud, la directory Caches non viene ripristinata, poiché iOS presume che i dati memorizzati nella cache verranno ricreati al primo avvio. Su Android, quando si ripristina da Google Drive, solo Internal Storage viene sottoposto a backup — la cache rimane vuota dopo il ripristino. In entrambi i casi, l'app deve funzionare correttamente con una cache vuota, senza mostrare errori all'utente o perdere funzionalità.

Raccomandazioni per la Gestione della Cache

La gestione corretta della cache dell'app è uno dei fattori che influenzano l'esperienza utente e la valutazione dell'app. Le seguenti raccomandazioni aiuteranno a evitare problemi tipici e ad aumentare la soddisfazione degli utenti.

  • Imposta un limite di dimensione per la cache. Utilizza DiskLruCache o librerie simili specificando il volume massimo in megabyte. Quando il limite viene superato, la libreria rimuove automaticamente i file meno utilizzati
  • Implementa un pulsante di pulizia della cache nelle impostazioni dell'app. Mostra la dimensione corrente della cache (nel formato “12,5 MB”) e richiedi conferma prima di pulire. Dopo la pulizia, aggiorna la dimensione visualizzata
  • Non archiviare nella cache file che non possono essere recuperati. Se i dati sono critici per il funzionamento dell'app, archiviali in Internal Storage (Android) o Documents (iOS) e metti solo una copia nella cache per un accesso rapido
  • Verifica la disponibilità della cache esterna prima di scrivere. Su Android, context.externalCacheDir può restituire null se la scheda SD non è installata o non è disponibile. Prevedi sempre un fallback sulla cache interna
  • Utilizza una politica di scadenza (TTL) per i dati memorizzati nella cache. Non conservare i file più del necessario: per le immagini — 24–48 ore, per le risposte API — da 5 minuti a 1 ora a seconda della frequenza di aggiornamento dei dati

Monitora regolarmente la dimensione della cache nell'analisi dell'app. Integra l'invio della metrica della dimensione della cache in Firebase Analytics o in un sistema simile. Se la dimensione media della cache supera i 100 MB, ottimizza la strategia di caching: riduci il TTL per i dati usati raramente, implementa la compressione delle immagini prima del caching (WebP invece di PNG, riduci la qualità JPEG all'85%), utilizza la paginazione per il caricamento dei contenuti dal server. Ricorda che gli utenti con dispositivi da 16–32 GB sono particolarmente sensibili alla dimensione dell'app: quando la cache raggiunge i 200 MB, molti utenti iniziano a cercare un modo per pulirla o semplicemente eliminano l'app. Secondo un sondaggio di Google, il 38% degli utenti ha eliminato almeno un'app a causa della crescita incontrollata della cache e del consumo di spazio.

Domande Frequenti

Perderò dati se pulisco la cache dell'app?

No, la pulizia della cache rimuove solo i file temporanei (immagini salvate, risposte del server). I dati dell'utente (password, impostazioni, database) sono archiviati in Internal Storage e non vengono influenzati dalla pulizia della cache.

Qual è la dimensione massima della cache raccomandata per un'app mobile?

Google Play raccomanda di non superare i 100 MB. Per le app con contenuti multimediali intensivi (social network, messaggistica), fino a 200 MB è accettabile a condizione che venga implementata la pulizia automatica e configurato un limite tramite una cache discrezionale.

iOS pulisce automaticamente la cache dell'app?

Sì, iOS può eliminare file da Library/Caches quando manca spazio o quando si ripristina da un backup. Il sistema utilizza un meccanismo di archiviazione purgabile per la pulizia automatica dei dati non critici.

Qual è la differenza tra cacheDir ed externalCacheDir su Android?

cacheDir si trova nella memoria interna del dispositivo e viene eliminato quando si disinstalla l'app. externalCacheDir si trova sulla scheda SD e può rimanere dopo la disinstallazione — deve essere pulito manualmente tramite codice al primo avvio dopo la reinstallazione.

Come gestiscono la cache le librerie di caricamento immagini?

Librerie come Glide, Picasso e Coil utilizzano una cache a due livelli: L1 — RAM (cache LRU per accesso immediato), L2 — disco (directory cache dell'app). La cache su disco ha un limite di dimensione configurabile e una politica di rimozione dei file vecchi.

Riepilogo

  • Directory Cache — archivio temporaneo per dati ricreabili che il sistema può pulire senza preavviso quando manca spazio
  • Android fornisce cacheDir (memoria interna) ed externalCacheDir (scheda SD) — entrambi non vengono sottoposti a backup e possono essere puliti dal sistema
  • iOS utilizza Library/Caches, automaticamente escluso dai backup iCloud e iTunes
  • Tipi di dati memorizzati nella cache — immagini (cache L2 delle librerie), risposte API (OkHttp Cache), risorse precompilate (shader, database temporanei)
  • Limite di dimensione della cache — non più di 100–200 MB con rimozione automatica dei file vecchi tramite DiskLruCache o meccanismo simile
  • Pulsante di pulizia della cache nelle impostazioni dell'app riduce il numero di recensioni negative e aumenta la fiducia degli utenti
  • Dati criticamente importanti non archiviarli mai nella cache — utilizza Internal Storage (Android) o Documents Directory (iOS) per l'archiviazione permanente

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche