Como definir o tamanho do cache e do armazenamento em disco do iOS e como o cache é restaurado do armazenamento em disco após o encerramento do aplicativo?

Eu já pergunteiuando exatamente as coisas são removidas da memória e do disco do urlcach

Agora, tenho mais algumas perguntas de acompanhamento:

O cache da memória é restrito pela ram do iPhone (geralmente 2 GB). Mas a persistência do disco é limitada por 64 GB ou 128 GB. Isso está correto?

Faz algum sentido persistir mais do que o armazenamento em memória. Pode ser útil se você não deseja ter um grande espaço de memória (e não deseja que o aplicativo seja encerrado a partir do estado suspenso), ou seja, permita que o cache seja restaurado do armazenamento em disco e retorne resultados persistentes?

Após o controle, clique emURLCache.shared Vejo os seguintes comentários:

Capacidade da memória: 4 megabytes (4 * 1024 * 1024 bytes) Capacidade do disco: 20 megabytes (20 * 1024 * 1024 bytes) Caminho do disco:(user home directory)/Library/Caches/(application bundle id)

s usuários que não possuem requisitos ou restrições especiais de cache devem considerar aceitável a instância padrão do cache compartilhado. Se essa instância de cache compartilhado padrão não for aceitável,+setSharedURLCache: pode ser chamado para definir um @ diferenNSURLCache instância a ser retornada deste método. Os chamadores devem ter o cuidado de garantir que o setter seja chamado no momento em que nenhum outro chamador tenha uma referência ao cache de URL compartilhado definido anteriormente. Isso evita que o armazenamento de dados em cache se torne inesperadamente irrecuperáve

Então, estou pensando que meu raciocínio está certo.

Como funciona o processo geral de leitura / gravação / restauração do cache?

Quero dizer, quando faço uma solicitação de rede pela primeira vez, é que toda a resposta / erro / dados recebeescrit / armazenado em cache e depois em persistência?

Próxima vez se eu quiserle, ele inicia primeiro a partir do cache e, se a resposta foi obsoleto / expirado, ele retornará. Nada mudaria no armazenamento em disco.

Se expirasse, faria uma nova solicitação e somente após obter uma resposta bem-sucedida, eliminaria a resposta da memória e do disco e gravaria a nova resposta no cache e no disco. Se a nova solicitação falhar, ela não será limpa, mas apenas manterá os dados obsoletos / expirados; portanto, se quisermos (carregar a resposta expirada), a carga será carregada a partir daí?

E quando o aplicativo é encerrado, a memória é descarregada. O armazenamento em disco permanece intacto, a menos que o dispositivo esteja com pouca memória ou você tenha atingido o limite de tamanho. No próximo lançamento do aplicativo, a memória recarrega o que estiver no armazenamento em disco no cach

Esta restauração de cache começará a carregar os dados mais recentes armazenados e, em seguida, passará aos dados mais antigos até atingir seu limite de tamanho ou apenas atingir o final dos itens armazenados no disco. Direita

Se em um dia normal, a quantidade de rede que um usuário faz para uma sessão típica de 1 hora é de aproximadamente 30mb, devo definir o tamanho do meu cache para 20mb e 30mb de armazenamento em disco? E se eu tiver imagens? Ouvi dizer que as imagens são armazenadas de maneira diferente, pois uma imagem de 1 MB pode ter 10 MB de tamanho. Então, como devo gerenciar isso?

Estou perguntando tudo isso porque quero melhorar a experiência de armazenamento em cache em um aplicativo e melhorar meu entendimento geral, para não aumentar muito o uso de memória * do aplicativo, para que ele não seja liberado da memória do estado suspenso devido ao alto uso de memória de meus aplicativos ou outros aplicativos sendo necessários.

*: algumas de nossas solicitações de rede farão o download de miniaturas, por isso preciso ter consideração ao aumentar meu limite de tamanho de cache.

questionAnswers(1)

yourAnswerToTheQuestion