Попытка загрузить изображение с URL в базе данных Firebase. Время загрузки изображения ОЧЕНЬ медленно, с чего бы это? - PullRequest
0 голосов
/ 14 июня 2019

У меня есть приложение, в котором я пытаюсь загрузить изображение из базы данных Firebase, используя URL-адрес.Это работает, просто очень, очень медленно.Есть ли для этого какая-либо причина?

Я пытался настроить кэширование, но не уверен, что делаю это правильно.Я довольно новичок в swift и xcode.

//Gets the image from the database URL
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 }
        print(response?.suggestedFilename ?? url.lastPathComponent)
        DispatchQueue.main.async() {
            let imageToCache = UIImage(data: data)
            self.imageCache.setObject(imageToCache!, forKey: url as AnyObject)
            self.profileImageView.image = imageToCache
            //self.profileImageView.image = UIImage(data: data)
        }
    }
}

Здесь я вызываю функцию downloadImage в функции viewDidLoad ():

let profileImageRef = Storage.storage().reference().child("users").child(uid!).child("\(uid!)-profileImage.jpg")
    //let databaseRef = Database.database().reference().child("userProfile").child(uid!)


    profileImageRef.downloadURL { url, error in
        if let error = error {
            //handle errors
            print(error)
        } else {
            //get download URL
            if let downloadUrl = url {
                let downloadString = downloadUrl.absoluteString
                //add downloadString to the database in profileImageURL
                let url = URL(string: downloadString)!
                if let imageFromCache = self.imageCache.object(forKey: url as AnyObject) as? UIImage {
                    self.profileImageView.image = imageFromCache
                    return
                } else {
                    self.downloadImage(from: url)
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...