首页 > 解决方案 > 如果使用 pod 缓存图像并异步下载,我应该下载两次图像吗?

问题描述

我是编程和 iOS 开发的新手,我尝试使用 kingfisher 异步缓存和下载图像。

我有一个 downloadURL,从该链接下载的图像将用于 2 个图像视图。对于 blurryImageView 和 posterImageView。

blurryImageView 将用作背景,如果用户的图像不在所需的垂直水平比例中,如下图所示

在此处输入图像描述

我的问题是,如果我从那个链接下载并将用于 2 个图像视图,我实际上是下载两次还是只下载一次?

这是我使用的简化代码:

import Kingfisher

        @IBOutlet weak var posterImageView: ImageView!
         @IBOutlet weak var blurryImageView: ImageView!

        override func viewDidLoad() {
            super.viewDidLoad()

         guard let urlPoster = URL(string: imagePathString) else {return}
         blurryImageView.kf.setImage(with: urlPoster)
         posterImageView.kf.setImage(with: urlPoster)

        }

正如您在上面的代码中看到的那样,图像将被异步下载,当posterImageView.kf.setImage(with: urlPoster)被触发时,图像(我假设)在 from 时仍未完成下载blurryImageView.kf.setImage(with: urlPoster)。所以我担心它会被下载两次,效率不高。我希望它只下载一次。如果我只想下载一次怎么办

标签: iosswiftuiimageviewkingfisher

解决方案


不用担心它不会再次下载。如果您阅读 kingfisher 文档,它会提到一旦下载图像,它们就会被缓存。因此,下次您从该 url 调用图像时,它会从缓存中获取。

这是翠鸟文档中的一行

Kingfisher 会从 url 下载图片,发送到内存缓存和磁盘缓存,并在 imageView 中显示。当您稍后使用相同的代码时,图像将从缓存中检索并立即显示。


推荐阅读