2011-07-22 5 views
8

La classe NSURLCache d'Apple a decent documentation, mais elle ne dit pas ce que caching algorithm utilise. Est-ce LRU, LFU, ou quelque chose d'autre entièrement?Quel algorithme de mise en cache NSURLCache utilise-t-il?

Je suis en développement pour l'iPad, et j'espère utiliser les capacités de cache-cache de NSURLCache pour mettre en cache les photos, en utilisant [NSURLCache setDiskCapacity] (la valeur par défaut est 0). Quelle est la limite supérieure de cette valeur?

+0

Cette information peut très bien être privée pour Apple. Ils pourraient plutôt suffire que cela «fonctionne». –

+0

De leurs documents, il semble que c'est le cas. Un peu brouillon, je pense - ils font une grande partie des tailles de cache et de cache, mais ne vous disent pas comment ils déterminent ce qui va rester ou être jeté à partir du cache. Cela pourrait affecter les performances dans (par exemple) une application de visualisation de photos. –

+0

Il pourrait aussi être dynamique. Il est possible que cela change les approches en fonction des circonstances. –

Répondre

3

La limite supérieure de la capacité du disque semble être la capacité du disque de l'appareil. Je ne vois rien à propos d'une limite imposée par le logiciel.

En ce qui concerne l'algorithme de mise en cache, il ne semble pas y avoir de documentation fournie par Apple, mais j'ai trouvé this. Ce n'est pas strictement ce que vous avez demandé, mais cela vous donne certainement un aperçu de ce qui se passe. Je crois que celui-ci utilise un algorithme de mise en cache multi-file (?) Où il est trié par taille et ensuite utilisé au moins récemment.

Si vous deviez faire quelque chose en fonction de la connaissance de l'algorithme de mise en cache, vous pourriez faire quelque chose avec ceci.

+0

Merci, c'est très intéressant. Comme vous le mentionnez, ce n'est pas la version de NSURLCache d'Apple, et potentiellement la leur pourrait fonctionner de manière totalement différente, mais en tout cas, elle vous offre la prime pour de vrais efforts. Merci! :-) –

1

Je suppose que vous allez devoir écrire quelques cas de test pour le comprendre. (Et, bien sûr, sachez que les paramètres peuvent changer avec la version d'iOs, la plate-forme matérielle, etc.)