2011-07-22 9 views
8

La clase NSURLCache de Apple tiene decent documentation, pero no dice qué caching algorithm utiliza. ¿Es LRU, LFU, o algo completamente diferente?¿Qué algoritmo de almacenamiento en caché usa NSURLCache?

Estoy desarrollando para el iPad, y espero hacer uso de las capacidades de almacenamiento en memoria caché de NSURLCache para almacenar fotos en caché, usando [NSURLCache setDiskCapacity] (el valor predeterminado parece ser 0). ¿Cuál es el límite superior de este valor?

+0

Esa información puede ser privada para Apple. Tal vez prefieran que sea suficiente que 'simplemente funcione'. –

+0

De sus documentos parece que ese es el caso. Creo que son un poco rudos: hacen una gran cantidad de almacenamiento en caché y de tamaño de caché, pero no te dicen cómo determinan qué va a permanecer en el caché. Podría afectar el rendimiento en (por ejemplo) una aplicación de visualización de fotos. –

+0

También podría ser dinámico. Es posible que cambie de enfoque dependiendo de las circunstancias. –

Respuesta

3

El límite superior de la capacidad del disco parece ser la capacidad del disco del dispositivo. No puedo ver nada sobre un límite de 'software impuesta'.

En cuanto al algoritmo de almacenamiento en caché, no parece haber ninguna documentación proporcionada por Apple, pero encontré this. No es estrictamente lo que pediste, pero ciertamente te da una idea de lo que está pasando. Creo que este utiliza un Algoritmo de almacenamiento en caché de múltiples colas (?) Donde se ordena por tamaño y luego se utiliza por lo menos recientemente.

Si estaba haciendo algo dependiente de conocer el algoritmo de almacenamiento en caché, podría hacer algo con esto.

+0

Gracias, eso es muy interesante. Como mencionas, no es la versión de Apple de 'NSURLCache', y potencialmente la de ellos podría funcionar de manera totalmente diferente, pero de todos modos te otorgaría la recompensa por un esfuerzo real. ¡Gracias! :-) –

1

Supongo que tendrá que escribir algunos casos de prueba para resolverlo. (Y, por supuesto, tenga en cuenta que los parámetros pueden cambiar con la versión de iOs, plataforma de hardware, etc.)

Cuestiones relacionadas