Caches Directory: o que é, gerenciamento de cache e limpeza de dados

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

Caches Directory é um diretório no sandbox da aplicação iOS projetado para armazenar dados temporários que podem ser restaurados ou recarregados da rede. De acordo com Apple File System Basics (2024), o sistema pode excluir arquivos do Caches Directory a qualquer momento para liberar espaço em disco — a aplicação deve lidar corretamente com a ausência desses arquivos e restaurá-los quando necessário. Ao contrário do Documents Directory, os dados do Caches não são incluídos nos backups do iCloud e iTunes, reduzindo a carga no armazenamento em nuvem do usuário.

Pontos Principais

  • Caches Directory é um armazenamento temporário para dados que podem ser restaurados da rede ou recriados.
  • O sistema iOS pode a qualquer momento excluir arquivos do Caches quando o espaço do dispositivo está baixo.
  • Os dados do Caches não são incluídos nos backups do iCloud e iTunes.
  • O caminho para o diretório é obtido através de NSCachesDirectory ou FileManager.urls(for: .cachesDirectory).
  • A principal diferença do Documents: Caches não se destina a dados do usuário cuja perda seja crítica.

O que é Caches Directory no iOS?

Caches Directory é um diretório dentro do sandbox da aplicação iOS otimizado para armazenar dados que podem ser restaurados quando necessário. Ao contrário do Documents Directory, o Caches não se destina a dados do usuário — é um armazenamento temporário para acelerar o desempenho da aplicação.

O iOS usa o Caches Directory para armazenar respostas de rede em cache, imagens pré-carregadas, objetos serializados e dados que a aplicação pode restaurar. Os desenvolvedores não devem confiar no armazenamento de longo prazo neste diretório.

De acordo com Apple WWDC 2020, cerca de 40% das aplicações iOS usam o Caches Directory para armazenar imagens e dados de rede em cache, enquanto 25% dos desenvolvedores colocam incorretamente no Caches dados que deveriam estar no Documents ou Application Support por não entenderem as diferenças entre esses diretórios.

Uma propriedade crítica do Caches: a aplicação deve lidar corretamente com situações em que um arquivo de cache foi excluído pelo sistema. Se remover o cache quebrar a funcionalidade da aplicação, então os dados estão armazenados no diretório errado.

Como obter o caminho para o Caches Directory

Em Swift, o caminho para o Caches Directory é obtido usando o método padrão do FileManager com .cachesDirectory. Esta é uma operação simples usada em praticamente toda aplicação iOS que trabalha com dados de rede.

swift
import Foundation

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

// Save cached JSON
let cacheFile = cachesURL.appendingPathComponent("feed_cache.json")
let jsonData = try JSONSerialization.data(
    withJSONObject: response,
    options: [.prettyPrinted]
)
try jsonData.write(to: cacheFile)

Objective-C usa NSSearchPathForDirectoriesInDomains com NSCachesDirectory. Embora a Apple recomende a API Swift, o código Objective-C com Caches Directory permanece funcional e suportado.

objective-c
@import Foundation;

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

Os projetos Swift devem preferir a API baseada em URL: é type-safe e integra-se melhor com frameworks modernos como SwiftUI e Combine.

Quais dados armazenar no Caches

Caches Directory é ideal para várias categorias de dados que a aplicação usa para acelerar o desempenho, mas não é a única fonte de verdade. Escolher os dados certos para cache afeta diretamente a UX e o desempenho da aplicação.

Respostas de rede em cache

Respostas JSON de APIs, dados de feeds de notícias, listas de objetos — tudo o que a aplicação pode baixar novamente do servidor. Use URLCache para cache automático de respostas HTTP ou salve objetos serializados manualmente.

Imagens e arquivos de mídia

Imagens baixadas da rede são o caso de uso mais comum do Caches Directory. Bibliotecas como SDWebImage e Kingfisher salvam imagens em cache no Caches por padrão.

Tipo de dadoAdequado para CachesPeríodo de retenção
JSON respostas APISimAté limpeza do sistema
Imagens da redeSimAté limpeza do sistema
Logs de depuraçãoCondicionalMelhor em tmp
Salvamentos de jogosNãoApenas Documents
Configurações do appNãoApplication Support

Se os dados não podem ser restaurados, eles não pertencem ao Caches. Este é o critério mais simples: imagine que amanhã o sistema excluirá todos os arquivos do Caches. Se a aplicação continuar funcionando corretamente, os dados estão armazenados corretamente.

Como o sistema gerencia a limpeza de cache

iOS gerencia automaticamente a limpeza do Caches Directory, mas os gatilhos e algoritmos exatos não são documentados pela Apple. Sabe-se que o sistema pode excluir arquivos do Caches quando o espaço em disco está baixo, bem como quando o recurso Offload Unused Apps está ativo.

O processo de limpeza é transparente para a aplicação: o sistema exclui arquivos sem notificação. A aplicação deve verificar a existência do arquivo antes de ler e recriá-lo se ausente. Não confiar no armazenamento de longo prazo é um requisito fundamental ao trabalhar com Caches.

De acordo com o artigo da Apple “File System Basics” (2024), a aplicação não deve esperar que os arquivos no Caches Directory estejam disponíveis entre sessões. Os desenvolvedores são aconselhados a implementar um mecanismo de fallback: se um arquivo em cache estiver faltando, baixe os dados da rede e salve-os novamente no Caches.

Um cenário separado é a descarrega da aplicação (Offload). Quando este recurso é ativado, o iOS remove a aplicação mas mantém seu Documents Directory. O Caches Directory é excluído no processo. Um usuário que restaura a aplicação não terá dados em cache — a aplicação deve baixá-los novamente.

Caches Directory vs Temporary Directory

A diferença entre os diretórios Caches e Temporary (tmp) frequentemente causa confusão entre os desenvolvedores. Ambos os diretórios armazenam dados temporários, mas com diferentes garantias de tempo de vida e propósito.

CaracterísticaCaches DirectoryTemporary Directory
Tempo de vidaDe sessão para sessão (não garantido)Apenas dentro de uma sessão
Limpeza do sistemaQuando o espaço está baixoAo finalizar a sessão ou reiniciar
PropósitoCache para acelerar o desempenhoDados muito temporários
ExemploImagens em cacheArquivo temporário antes da exportação
BackupNãoNão

Escolha Caches se for benéfico manter dados entre inicializações da aplicação, mas eles podem ser restaurados. Use tmp se os dados forem necessários apenas na sessão atual e não tiverem valor após o término da aplicação.

Melhores práticas com Caches

Trabalhar com o Caches Directory requer seguir várias regras que ajudam a evitar perda de dados, comportamento inesperado da aplicação e problemas de desempenho.

Sempre verifique a existência do arquivo antes de ler

FileManager.fileExists(atPath:) deve ser chamado antes de cada leitura do Caches. Se o arquivo estiver faltando, carregue os dados da fonte original e salve no cache. Nunca presuma que um arquivo no Caches existe.

Limite o tamanho do cache

Defina um tamanho máximo para o Caches Directory na sua aplicação. Por exemplo, um limite de 50 MB para imagens e 10 MB para respostas JSON. Quando o limite for excedido, exclua os arquivos mais antigos por data de modificação.

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 }

    // Enumerate and remove old files
    // when exceeding size limit
}

Seguir estas práticas garante que a aplicação funcione corretamente independentemente das ações de limpeza de cache do sistema, e os usuários não encontrem perda inesperada de dados.

Perguntas Frequentes

O sistema notifica a aplicação antes de limpar o Caches Directory?

Não, o iOS não envia notificações antes de excluir arquivos do Caches. O processo de limpeza é completamente transparente para a aplicação. A única forma de saber sobre uma exclusão é ao tentar ler um arquivo — o FileManager retorna nil ou lança um erro, e a aplicação deve lidar com esta situação.

O usuário pode limpar manualmente o Caches Directory?

Os usuários não têm acesso direto ao Caches Directory através do Files ou iTunes. No entanto, eles podem limpar o cache de todas as aplicações via Ajustes > Geral > Armazenamento, selecionar uma aplicação específica e tocar em “Descarregar App.” O iOS também pode limpar o cache automaticamente quando o espaço está baixo.

Como o URLCache difere do salvamento manual no Caches Directory?

URLCache é um mecanismo integrado de cache de requisições HTTP do Foundation. Ele salva e carrega automaticamente respostas em cache, usando o Caches Directory internamente. O salvamento manual dá mais controle: você pode escolher o formato, criptografar dados e gerenciar o tempo de vida de cada arquivo individualmente.

O que acontece com o Caches Directory ao atualizar a aplicação?

Ao atualizar a aplicação através da App Store, o Caches Directory é preservado. No entanto, o conteúdo pode ser excluído pelo sistema se a nova atualização exigir mais espaço para instalação. O desenvolvedor não deve confiar na persistência do Caches após uma atualização — esta é uma razão adicional para implementar um mecanismo de fallback.

Como desabilitar o cache automático para NSURLSession?

Defina URLCache como nil para uma sessão NSURLSession específica ou use a política de cache .reloadIgnoringLocalCacheData. Você também pode criar uma URLSessionConfiguration com cache vazio: sessionConfiguration.urlCache = nil. Isto é útil para dados que devem estar sempre atualizados.

Resumo

  • Caches Directory é armazenamento temporário para dados que podem ser restaurados da rede ou recriados.
  • O sistema iOS pode a qualquer momento excluir arquivos do Caches sem notificar a aplicação.
  • Os dados do Caches não são incluídos nos backups do iCloud e iTunes, economizando espaço.
  • O caminho para o diretório é FileManager.urls(for: .cachesDirectory) em Swift ou NSSearchPathForDirectoriesInDomains em Objective-C.
  • No Caches são armazenadas imagens em cache, respostas JSON de API e outros dados recuperáveis.
  • Ao contrário do tmp, o Caches pode preservar dados entre inicializações, mas sem garantias.
  • Sempre verifique a existência do arquivo antes de ler do Caches e implemente carregamento de fallback.

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