Jav*_*diz 9 ios swift alamofire alamofireimage
我正在使用AlamofireImage库来缓存下载的图像.
码:
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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
日志:
如日志所示,请求第一个图像,第二个图像从缓存中获取.没有额外的请求,图像立即显示.
我希望当我重新启动应用程序时,即使是从缓存中获取的第一个图像,但Log保持不变.我看着Library/Caches/.../fsCachedData那里,图像就在那里,准备好了.
问题: 我在这里缺少什么?我需要在后续请求中从磁盘缓存中获取第一个图像.
FBe*_*nte 10
此方法将映像请求保存在磁盘上,因为它们的缓存控制最大使用时间和空间可用.如果要设置自己的最大年龄,则必须设置自定义 NSURLCache,diskCache以便cachedResponse在storeCachedResponse方法中返回修改后的NSURLCache.顺便说一下,内存缓存是由AutoPurgingImageCachein中处理的ImageDownloader.downloader使用此方法设置您:
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_sharedImageDownloader = downloader
return downloader
}
Run Code Online (Sandbox Code Playgroud)
2016年9月8日更新@ kishorer747:
该NSURLCache memoryCapacity为零,因为我不希望像请求响应被保存在高速缓存以节省内存做.应该只有AutoPurgingImageCache内存中的请求URL保存图像作为键.您可以修改我的示例方法,以设置所需的cacheCapacity和cachePurgeCapacity图像内存缓存:
let cacheCapacity = 100 * 1024 * 1024
let cachePurgeCapacity = 60 * 1024 * 1024
let imageCache: ImageRequestCache = AutoPurgingImageCache(memoryCapacity: cacheCapacity, preferredMemoryUsageAfterPurge: cachePurgeCapacity)
let downloader = ImageDownloader(configuration: configuration, imageCache: imageCache)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4769 次 |
| 最近记录: |