Uso de imágenes en caching de disco si está presente en Alamofire Images

Estoy usando la biblioteca AlamofireImage para almacenar en caching las imágenes descargadas.

Código:

import UIKit import AlamofireImage class ViewController: UIViewController { @IBOutlet weak var firstImageView: UIImageView! @IBOutlet weak var secondImageView: UIImageView! let downloader = ImageDownloader() let URLRequest = NSURLRequest(URL: NSURL(string: "https://httpbin.org/image/jpeg")!) override func viewDidLoad() { super.viewDidLoad() requestFirstImage() } func requestFirstImage() { downloader.downloadImage(URLRequest: URLRequest) { response in print(response.request) print(response.response) debugPrint(response.result) if let image = response.result.value { self.firstImageView.image = image self.requestSecondImage() } } } func requestSecondImage() { downloader.downloadImage(URLRequest: URLRequest) { response in print(response.request) print(response.response) debugPrint(response.result) if let image = response.result.value { self.secondImageView.image = image } } } } 

Iniciar session:

introduzca la descripción de la imagen aquí

Como el logging muestra la primera image que se solicita y la segunda se obtiene del caching. No se realiza ninguna request adicional y la image se muestra al instante.

Espero cuando vuelva a iniciar la aplicación que incluso la primera image donde se obtiene del caching, pero el Log permanece igual. Miré a la Library/Caches/.../fsCachedData y la image está allí, list para ser encontrada.

Pregunta: ¿Qué me falta aquí? Necesito que la primera image se recupere del caching del disco en requestes posteriores.

Este enfoque ahorra las requestes de imágenes tanto time en el disco como su edad máxima de control de caching dice y el espacio está disponible. Si desea establecer una edad máxima propia, debe configurar un NSURLCache personalizado como diskCache donde debe devolver el cachedResponse modificado en el método storeCachedResponse . Por cierto, el caching de memory es manejado por AutoPurgingImageCache en ImageDownloader . Configure su progtwig de downloader con este método:

 func diskImageDownloader(diskSpaceMB: Int = 150) -> ImageDownloader { let diskCapacity = diskSpaceMB * 1024 * 1024 let diskCache = NSURLCache(memoryCapacity: 0, diskCapacity: diskCapacity, diskPath: "image_disk_cache") let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() configuration.URLCache = diskCache let downloader = ImageDownloader(configuration: configuration) UIImageView.af_shanetworkingImageDownloader = downloader return downloader } 

Actualizado el 09/08/16 para @ kishorer747:

La capacidad de memory NSURLCache es cero porque no quiero que las respuestas de requestes de imágenes se guarden en caching para save memory. Solo se debe save la image para la URL de request como key mediante AutoPurgingImageCache en la memory. Puede modificar mi método de ejemplo como se siguió para configurar su cacheCapacity y cachePurgeCapacity para la caching de la memory de imágenes:

 let cacheCapacity = 100 * 1024 * 1024 let cachePurgeCapacity = 60 * 1024 * 1024 let imageCache: ImageRequestCache = AutoPurgingImageCache(memoryCapacity: cacheCapacity, prefernetworkingMemoryUsageAfterPurge: cachePurgeCapacity) let downloader = ImageDownloader(configuration: configuration, imageCache: imageCache)