从Firebase加载图像非常慢

问题描述

我对Swift开发还不是很陌生,并且想知道为什么显示图像需要这么长时间。这是一张4.44kb的图片,其URL存储在Firestore文档中。它需要一秒钟才能显示出来,这对UX来说不是很好。如我所说,图像(条形码)仅为4.44kb,这使我想知道为什么从Instagram或Facebook加载图像比加载该图像要快。

我的代码

在我的viewDidLoad中:

dbRef.getDocument { (document,err) in
        if let e = err {
            print("Error retrieving document: \(e)")
        } else {
            let data = document?.data()
            
            if let imageURL = data?[K.User.barcodeImage] as? String {
                // let url = URL(fileURLWithPath: imageURL)
                let url = NSURL(string: imageURL)
                self.downloadImage(from: url as! URL)
                let number = data![K.User.barcodeNumber] as! String
                self.cardNumber.text = number
                UserDefaults.standard.set(number,forKey: K.User.barcodeNumber)
                UserDefaults.standard.synchronize()
            }
            
            
        }
    }

其余:

func getData(from url: URL,completion: @escaping (Data?,URLResponse?,Error?) -> ()) {
    URLSession.shared.dataTask(with: url,completionHandler: completion).resume()
}

func downloadImage(from url: URL) {
    getData(from: url) { data,response,error in
        guard let data = data,error == nil else { return }
        dispatchQueue.main.async() { [weak self] in
            self?.cardCode.image = UIImage(data: data)
        }
    }
}

这与dispatchQueue有关吗?预先谢谢你!

解决方法

1秒的延迟并非不合理,但您可以尝试启用firebase storage / GCS bucket中的缓存标头以提高性能。