Diretório de Cache do App — O Que É, Finalidade e Como Limpar no Desenvolvimento Móvel

Autor: IT Sectr Publicado: 2026-03-13 Tempo de leitura: 10 min

O diretório de cache da aplicação é um armazenamento temporário de dados que podem ser recriados no próximo uso. Segundo Android Developers, 2026, o sistema pode excluir arquivos deste diretório quando faltar memória sem aviso prévio, portanto a aplicação não deve depender da integridade do cache para dados criticamente importantes. O uso correto do diretório de cache reduz o espaço ocupado e acelera o carregamento de conteúdo.

Pontos Principais

  • Diretório de Cache — armazenamento temporário de arquivos que podem ser recriados, não destinado a dados permanentes
  • Android fornece context.cacheDir e context.externalCacheDir para armazenar cache na memória interna e externa
  • iOS utiliza NSCachesDirectory, que é automaticamente excluído dos backups do iCloud
  • O sistema pode limpar o cache a qualquer momento — armazene dados críticos no Internal Storage
  • A limpeza manual do cache nas configurações do aplicativo aumenta a confiança do usuário e melhora as avaliações

O Que É o Diretório de Cache de uma Aplicação?

O diretório de cache é um diretório especial na memória interna (ou externa) da aplicação projetado para arquivos temporários. A principal diferença do Internal Storage: o sistema tem o direito de excluir arquivos do cache sem aviso se o dispositivo estiver com pouco espaço livre. Portanto, a aplicação nunca deve armazenar a única cópia de dados importantes do usuário no cache. O cache é ideal para imagens baixadas, respostas do servidor, recursos pré-compilados e qualquer outro dado que possa ser restaurado remotamente ou recriado programaticamente.

No Android, o diretório de cache está localizado em /data/data/<package>/cache/ e é acessível via context.cacheDir. O tamanho do cache não é explicitamente limitado, mas o Google Play recomenda não exceder 100 MB, pois aplicativos com cache grande recebem avaliações negativas dos usuários. No iOS, o diretório de cache está dentro do contêiner Sandbox em Library/Caches/ e é acessível via NSCachesDirectory. O iOS pode excluir arquivos do Caches ao restaurar o dispositivo de um backup ou quando houver falta crítica de espaço — isso deve ser comunicado aos usuários na documentação do aplicativo.

Entender quais dados podem ser colocados com segurança no cache e quais devem ser armazenados no Internal Storage ou Documents é uma habilidade chave do desenvolvedor. O uso incorreto do cache leva a dois problemas opostos: ou o aplicativo ocupa muito espaço (se o desenvolvedor armazena no cache o que deveria estar no Documents) ou o usuário perde dados (se o desenvolvedor armazena no cache o que deveria ser persistido). Siga uma regra simples: se os dados podem ser recuperados — cache; se a recuperação é impossível — Internal Storage ou Documents.

Finalidade e Tipos de Dados Armazenados em Cache

Diferentes tipos de dados têm velocidade de recriação e requisitos de espaço distintos. Compreender essas características ajuda o desenvolvedor a escolher corretamente quais arquivos colocar no cache e quais no armazenamento permanente.

Cache de Imagens e Arquivos de Mídia

O tipo mais comum de dados armazenados em cache são imagens baixadas da rede. As bibliotecas Glide, Picasso e Coil salvam automaticamente as imagens baixadas no diretório de cache da aplicação. O tamanho típico do cache de imagens em aplicativos sociais varia de 50 a 200 MB. O tamanho do cache depende da resolução da tela do dispositivo e da quantidade de conteúdo visualizado. O Glide usa cache em dois níveis: primeiro verifica o cache L1 na RAM (algoritmo LRU), depois o cache L2 no disco. Isso garante carregamento rápido de imagens visualizadas repetidamente sem uma solicitação de rede adicional. Configurar o tamanho máximo do cache de disco via DiskCacheStrategy permite controlar o espaço ocupado: quando o limite é excedido, a biblioteca remove automaticamente os arquivos menos usados.

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 ->
        // gravar dados no cache
    }
}

Cache de Solicitações de Rede

As respostas de solicitações de API podem ser armazenadas em cache para acesso offline e para reduzir a carga do servidor. O OkHttp fornece suporte integrado para cache através da classe Cache. Os cabeçalhos de resposta Cache-Control e ETag gerenciam a política de cache: o servidor especifica por quanto tempo a resposta é considerada atual. Com a configuração adequada, o cache de solicitações de rede pode reduzir o tempo de carregamento de dados em 60–80% em visitas repetidas e fornecer funcionalidade básica do aplicativo sem conexão com a internet. O tamanho do cache de solicitações de rede raramente excede 10–20 MB, mas com uso intensivo do aplicativo pode chegar a 50 MB. Configure o tamanho máximo do cache através do construtor OkHttpClient.Builder e verifique a validade dos dados em cache a cada inicialização do aplicativo.

Cache de Bancos de Dados e Dados Pré-compilados

Bancos de dados SQLite podem gerar arquivos temporários durante a operação: arquivos WAL (Write-Ahead Log), registros de reversão e páginas de índice. Esses arquivos são armazenados junto com o banco de dados principal, mas para bancos de dados temporários (por exemplo, pesquisa de texto completo ou análise) pode-se especificar a localização no diretório de cache. Programas de shader pré-compilados OpenGL e Vulkan também são armazenados em cache neste diretório, acelerando o primeiro carregamento de cenas gráficas. No iOS, o NSCachesDirectory é recomendado para armazenar dados pré-compilados do Core Data e arquivos temporários de processamento de imagens.

Como Funciona a Limpeza de Cache no Android e iOS

A limpeza do cache pode ocorrer automaticamente (pelo sistema) ou manualmente (pelo usuário ou aplicativo). Entender o comportamento do sistema em diferentes cenários é necessário para evitar a perda de dados.

Limpeza Automática pelo Sistema

No Android, o sistema inicia o processo de limpeza do cache quando o espaço livre na partição /data cai abaixo de um limite crítico (normalmente 500 MB). O processo cacheflush analisa o tamanho do cache de todos os aplicativos instalados e remove os arquivos menos usados, começando pelos mais antigos. O usuário também pode limpar manualmente o cache de todos os aplicativos através das configurações do sistema: “Configurações → Armazenamento → Cache → Limpar cache.” No iOS, a limpeza automática do Caches ocorre ao restaurar o dispositivo de um backup — o iOS não restaura o conteúdo de Library/Caches/. Além disso, o iOS pode excluir seletivamente arquivos do Caches quando o espaço livre acaba, usando o mecanismo de armazenamento purgável para dados isolados.

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

Limpeza Programática do Cache pelo Aplicativo

O desenvolvedor pode implementar a limpeza programática do cache a pedido do usuário ou em um cronograma. No Android, para limpar o cache do próprio aplicativo, basta excluir todos os arquivos em context.cacheDir e context.externalCacheDir. No iOS, limpe o conteúdo de Library/Caches/ mas não exclua o diretório em si — apenas seu conteúdo. Recomenda-se mostrar ao usuário o tamanho atual do cache nas configurações do aplicativo juntamente com um botão “Limpar cache” com confirmação. De acordo com o Google Play Console, aplicativos com um botão de limpeza de cache recebem 22% menos reclamações sobre falta de espaço em comparação com aplicativos sem esse recurso. A limpeza do cache deve ser segura: o aplicativo deve lidar corretamente com a situação em que os arquivos em cache são excluídos e recarregá-los de forma transparente no próximo acesso.

Diferenças Entre cacheDir no Android e iOS

Apesar da mesma finalidade, a implementação dos diretórios de cache no Android e iOS tem diferenças significativas. O desenvolvedor precisa considerá-las para o correto funcionamento do aplicativo em ambas as plataformas.

CaracterísticaAndroidiOS
Caminho padrão/data/data/<package>/cache/Library/Caches/
API de acessocontext.cacheDirNSCachesDirectory
Cache externocontext.externalCacheDirNão disponível
BackupNão é feito backupNão é feito backup
Limpeza do sistemaQuando falta espaçoAo restaurar de backup e quando falta espaço
Visibilidade ao usuárioNas configurações do aplicativoApenas quando conectado a um computador

Android fornece um diretório de cache externo separado via context.externalCacheDir — ele está no cartão SD (se instalado) e não é excluído ao desinstalar o aplicativo. Isso é conveniente para arquivos de mídia grandes, mas cria o risco de deixar resíduos no cartão de memória. O iOS não tem o conceito de cache externo: todos os arquivos temporários são armazenados dentro do contêiner Sandbox e são garantidamente excluídos ao desinstalar. No Android, o cache é visível ao usuário nas configurações do aplicativo e ele pode limpá-lo manualmente. No iOS, as configurações do sistema não mostram o tamanho do cache de aplicativos individuais — o usuário só pode limpar o cache excluindo e reinstalando o aplicativo, a menos que o desenvolvedor tenha adicionado um botão de limpeza na interface.

Uma diferença importante — comportamento na restauração. No iOS, ao restaurar de um backup do iTunes ou iCloud, o diretório Caches não é restaurado, pois o iOS presume que os dados em cache serão recriados na primeira inicialização. No Android, ao restaurar do Google Drive, apenas o Internal Storage é copiado — o cache permanece vazio após a restauração. Em ambos os casos, o aplicativo deve funcionar corretamente com um cache vazio, sem mostrar erros ao usuário ou perder funcionalidade.

Recomendações para Gerenciamento de Cache

O gerenciamento adequado do cache do aplicativo é um dos fatores que influenciam a experiência do usuário e a classificação do aplicativo. As seguintes recomendações ajudarão a evitar problemas típicos e aumentar a satisfação do usuário.

  • Defina um limite de tamanho para o cache. Use DiskLruCache ou bibliotecas similares especificando o volume máximo em megabytes. Quando o limite é excedido, a biblioteca remove automaticamente os arquivos menos usados
  • Implemente um botão de limpeza de cache nas configurações do aplicativo. Mostre o tamanho atual do cache (no formato “12,5 MB”) e solicite confirmação antes de limpar. Após a limpeza, atualize o tamanho exibido
  • Não armazene no cache arquivos que não podem ser recuperados. Se os dados são críticos para o funcionamento do aplicativo, armazene-os no Internal Storage (Android) ou Documents (iOS), e coloque apenas uma cópia no cache para acesso rápido
  • Verifique a disponibilidade do cache externo antes de escrever. No Android, context.externalCacheDir pode retornar null se o cartão SD não estiver instalado ou indisponível. Sempre preveja um fallback para o cache interno
  • Use uma política de expiração (TTL) para dados em cache. Não armazene arquivos por mais tempo que o necessário: para imagens — 24–48 horas, para respostas de API — de 5 minutos a 1 hora dependendo da frequência de atualização dos dados

Monitore regularmente o tamanho do cache na análise do aplicativo. Integre o envio da métrica de tamanho do cache no Firebase Analytics ou sistema similar. Se o tamanho médio do cache exceder 100 MB, otimize a estratégia de cache: reduza o TTL para dados raramente usados, implemente compressão de imagens antes do cache (WebP em vez de PNG, reduza a qualidade JPEG para 85%), use paginação para carregar conteúdo do servidor. Lembre-se de que usuários com dispositivos de 16–32 GB são especialmente sensíveis ao tamanho do aplicativo: quando o cache atinge 200 MB, muitos usuários começam a procurar uma maneira de limpá-lo ou simplesmente excluem o aplicativo. De acordo com uma pesquisa do Google, 38% dos usuários excluíram pelo menos um aplicativo devido ao crescimento descontrolado do cache e do espaço ocupado.

Perguntas Frequentes

Perderei dados se limpar o cache do aplicativo?

Não, a limpeza do cache remove apenas arquivos temporários (imagens salvas, respostas do servidor). Os dados do usuário (senhas, configurações, bancos de dados) estão armazenados no Internal Storage e não são afetados ao limpar o cache.

Qual é o tamanho máximo de cache recomendado para um aplicativo móvel?

Google Play recomenda não exceder 100 MB. Para aplicativos com conteúdo de mídia intensivo (redes sociais, mensageiros), até 200 MB é aceitável desde que a limpeza automática seja implementada e um limite seja configurado através de um cache discreto.

O iOS limpa automaticamente o cache do aplicativo?

Sim, o iOS pode excluir arquivos de Library/Caches quando falta espaço ou ao restaurar de um backup. O sistema usa um mecanismo de armazenamento purgável para limpeza automática de dados não críticos.

Qual a diferença entre cacheDir e externalCacheDir no Android?

cacheDir está localizado na memória interna do dispositivo e é excluído ao desinstalar o aplicativo. externalCacheDir está no cartão SD e pode permanecer após a desinstalação — deve ser limpo manualmente via código na primeira inicialização após a reinstalação.

Como as bibliotecas de carregamento de imagens gerenciam o cache?

Bibliotecas como Glide, Picasso e Coil usam cache em dois níveis: L1 — RAM (cache LRU para acesso instantâneo), L2 — disco (diretório de cache do aplicativo). O cache em disco tem um limite de tamanho configurável e uma política de remoção de arquivos antigos.

Resumo

  • Diretório de Cache — armazenamento temporário para dados recriáveis que o sistema pode limpar sem aviso quando falta espaço
  • Android fornece cacheDir (memória interna) e externalCacheDir (cartão SD) — ambos não são copiados e podem ser limpos pelo sistema
  • iOS usa Library/Caches, automaticamente excluído dos backups do iCloud e iTunes
  • Tipos de dados em cache — imagens (cache L2 de bibliotecas), respostas de API (OkHttp Cache), recursos pré-compilados (shaders, bancos de dados temporários)
  • Limite de tamanho do cache — não mais que 100–200 MB com remoção automática de arquivos antigos via DiskLruCache ou mecanismo similar
  • Botão de limpeza de cache nas configurações do aplicativo reduz o número de avaliações negativas e aumenta a confiança do usuário
  • Dados criticamente importantes nunca armazene no cache — use Internal Storage (Android) ou Documents Directory (iOS) para armazenamento permanente

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também