Очень медленная загрузка с URL

#ios

#iOS

Вопрос:

Я использую следующий метод для загрузки изображений с URL-адреса:

 extension UIImage {
    
    public static func loadFrom(url: URL, completion: @escaping (_ image: UIImage?) -> ()) {
        DispatchQueue.global().async {
            if let data = try? Data(contentsOf: url) {
                DispatchQueue.main.async {
                    completion(UIImage(data: data))
                }
            } else {
                DispatchQueue.main.async {
                    completion(nil)
                }
            }
        }
    }
    
}
  

Но пока я нахожу очень медленной загрузку изображений для использования в CollectionView.

Есть ли какой-либо другой способ ускорить загрузку с изображений?

Все изображения размещаются на экземпляре AWS.

Комментарии:

1. Предпочитает URLSession больше Data(contentsOf:) . Кроме того, Alamofire, SDWebImage или другая сторонняя библиотека могут управлять кешем и т. Д. Теперь, каков размер изображений? Можете ли вы загрузить «меньшие»?

Ответ №1:

Вы можете попробовать то же самое с URLSession

 extension UIImageView {
    func downloaded(from url: URL, contentMode mode: UIView.ContentMode = .scaleAspectFit) {
        contentMode = mode
        URLSession.shared.dataTask(with: url) { data, response, error in
            guard
                let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
                let mimeType = response?.mimeType, mimeType.hasPrefix("image"),
                let data = data, error == nil,
                let image = UIImage(data: data)
                else { return }
            DispatchQueue.main.async() { [weak self] in
                self?.image = image
            }
        }.resume()
    }
    func downloaded(from link: String, contentMode mode: UIView.ContentMode = .scaleAspectFit) { 
        guard let url = URL(string: link) else { return }
        downloaded(from: url, contentMode: mode)
    }
}