ダウンロードしたイメージをキャッシュするのにAlamofireImageライブラリを使用しています。Alamofireイメージにディスクキャッシュされたイメージを使用する場合
コード:
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
}
}
}
}
ログ:ログとして
は、第1の画像が要求されることを示す2つ目は、キャッシュからフェッチされます。余分な要求はなく、画像は即座に表示されます。
私は、最初の画像であってもキャッシュからフェッチされたものの、Log
のままであってもアプリを再起動すると思います。私はLibrary/Caches/.../fsCachedData
を見て、そこに画像があり、取り出せる状態になっています。
質問: ここでは何が欠けていますか?最初のイメージが後続の要求でディスクキャッシュから取得される必要があります。
はあなたが正しく、サーバー上のキャッシュ制御ヘッダーを設定しましたか? – Curmudgeonlybumbly
キャッシュコントロールヘッダーが解決されていない場合でも、ローカルに保存されたイメージを取得します。私の理解が正しい場合、私はオフラインで保存されたイメージを取得する必要があります。ここでは該当しません –
次に、AutoPurgingImageCacheを明示的に使用する必要があります。 AlamoFireImageのホームページにあるReadmeの例を参照してください。 – Curmudgeonlybumbly