A pesar de la documentación de Apple indicating otherwise, NSURLCache
en iOS no hace ningún almacenamiento en disco (flash) en absoluto. Puede subclase NSURLCache
para cambiar el comportamiento de las operaciones de búsqueda y almacenamiento para usar el disco (como SDURLCache
), pero debido a las siguientes limitaciones severas de cómo se usa e implementa la memoria caché, esto no funciona tan bien como usted ' d esperar:NSURLConnection en iOS no intenta almacenar en caché objetos de más de 50 KB
NSURLConnection
ni siquiera llamarstoreCachedResponse:forRequest:
de archivos a través de alrededor de 50 KB (> = 52428 bytes, para ser exactos). Esto hace que la subclasificaciónNSURLCache
no tenga sentido para nuestro uso (imágenes de 200KB), ya que ni siquiera llegará a la memoria caché. Como resultado, tenemos que agregar el almacenamiento en caché manualmente en un nivel superior aNSURLConnection
.- Incluso cuando uno llama manualmente al
storeCachedResponse:forRequest:
del NSURLCache incorporado, solo almacena la respuesta en la memoria si es inferior a aproximadamente 180 KB. Probé esto llamando manualmente a storeCachedResponse y viendo que el antes/después decurrentMemoryUsage
no cambió para longitudes de datos superiores a aproximadamente 180 KB. Así que tenemos que escribir nuestro propio almacenamiento en memoria caché LRU también.
¿Alguien más ha notado estos problemas? ¿O hay algo que me falta?
FYI, estoy corriendo iOS 4.3 en el simulador y en un iPad 2.
ASIHTTP ya no es compatible –