2013-04-09 1 views
3

J'utilise par défaut NSURLCache pour mettre en cache les images dans mon application iPhone. Que se passera-t-il si le cache est plein et que je vais essayer de mettre en cache une autre image?Que se passe-t-il si NSURLCache est plein?

Ne met-il pas en cache l'image? ou il sera remplacé par l'image la plus ancienne en cache?

Merci beaucoup

+0

Son comportement n'est pas décrit à la documentation, mais je m'attendais à Apple d'avoir quelque chose de mieux que FIFO, par exemple. le poids des réponses mises en cache peut être augmenté en fonction du compteur de hits du cache. Et le comportement est très probablement différent pour les couches mémoire/disque. –

+0

Si le système augmente lui-même la mémoire cache allouée, à quoi sert la déclaration de la taille du cache à la création? Je crois vraiment que c'est un peu FIFO mais je ne suis pas sûr et mes tests semblent inexacts. Je ne suis pas sûr à quoi s'attendre si mon cache est de 50 Mo et qu'il est rempli – Patz

+0

Dit simplement aucune sorte de cache est censé fournir une sorte d'intégrité des données, sinon c'est une base de données, pas un cache, et vous devez le gérer différemment. –

Répondre

2

Le cache maximale peut être influencée par l'initialisation initWithMemoryCapacity: ... diskCapacity: ... diskPath: ..] Le nouveau fichier sera téléchargé toujours. (sauf quand il est plus grand que la capacité mémoire maximale, il sera simplement téléchargé et non sauvegardé dans le cache) Si la taille maximale du cache est atteinte, les autres fichiers seront supprimés. Il n'est pas spécifié quels fichiers seront supprimés. Il n'est pas difficile de créer votre propre NSUrlCache et de le gérer vous-même. si vous voulez voir un exemple comment faire cela, alors jetez un oeil à https://github.com/evermeer/EVURLCache

Questions connexes