ios - 如果使用 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)
。所以我担心它会被下载两次,效率不高。我希望它只下载一次。如果我只想下载一次怎么办
解决方案
不用担心它不会再次下载。如果您阅读 kingfisher 文档,它会提到一旦下载图像,它们就会被缓存。因此,下次您从该 url 调用图像时,它会从缓存中获取。
这是翠鸟文档中的一行
Kingfisher 会从 url 下载图片,发送到内存缓存和磁盘缓存,并在 imageView 中显示。当您稍后使用相同的代码时,图像将从缓存中检索并立即显示。
推荐阅读
- javascript - 占位符上的节点、快递和请求在 \n 上显示批次
- python - 通过 cmd 使用不同的配置文件进行 Python 项目
- docker - swipl 的 Docker 镜像不包含 jpl
- grails - Grails 3.x - 为功能测试创建测试数据
- fortran - 在特定范围内打印不同的值
- kernel - perf ftrace falis 开始
- spring-boot - 带有 proguard 的 kotlin-reflect 会导致反射错误
- python - MNIST 手写数字
- javascript - 为每个级别缩放谷歌地图设置事件?
- javascript - ReactNative 端口 8081 问题:403 Forbidden