我正在使用以下方法从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实例上。
答案 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)
}
}