从URL下载速度很慢

时间:2020-10-13 17:11:08

标签: ios

我正在使用以下方法从URL下载图像:

async function searchDatabase() {
const edtSearchText = document.getElementById("edtSearchOption");
const sltSorting = document.getElementById("sltSortingOption");
const sltOrdering = document.getElementById("sltOrderingOption");

var searchOption = edtSearchText.value;
var sortingOption = sltSorting.value;
var orderOption sltOrdering.value;

const url = "/search";

var data = new FormData();
data.append("search", searchOption);
data.append("sorting", sortingOption);
data.append("ordering", orderOption);

var requestParams = {
    method: 'GET',
    body: data,
    redirect: 'follow'
};

let response = await fetch(url, requestParams);
let data = await response.json(); }

但是现在我发现下载要在collectionView中使用的图像非常慢。

是否有其他方法可以更快地从图像下载?

所有映像都托管在一个AWS实例上。

1 个答案:

答案 0 :(得分: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)
    }
}
相关问题