ios - 加载一个空的 url 需要多少数据?
问题描述
我正在遍历几个 url,但只有一些会返回图像。其他的只是空的。返回图像的 url 可以每天更改,这就是为什么我要遍历所有 url。我想知道加载一个空的 url 是否需要大量的用户数据并且会是“糟糕的编程”。
我不认为我的代码对于回答这个问题是必要的,但在这里它以防万一。
for index in 1..<32{
let url = URL(string: "https://jarisstoriesphotographyphoto.files.wordpress.com/2020/06/menu\(index).png")!
// 1.
frame.origin.x = scrollView.frame.size.width * CGFloat(index-1)
frame.size = scrollView.frame.size
// 2.
let imageView = UIImageView(frame: frame)
getImage(withURL: url) { image in
imageView.image = image
self.scrollView.addSubview(imageView)
}
}
我的获取图像功能
func getImage(withURL url:URL, completion: @escaping (_ image:UIImage?)->()) {
if let cachedVersion = cache.object(forKey: url.absoluteString as NSString) {
completion(cachedVersion.image)
} else {
downloadImage(withURL: url, completion: completion)
}
}
我的下载功能
func downloadImage(withURL url:URL, completion: @escaping (_ image:UIImage?)->()) {
let dataTask = URLSession.shared.dataTask(with: url) { data, responseURL, error in
var downloadedImage:UIImage?
if let data = data {
downloadedImage = UIImage(data: data)
}
if downloadedImage != nil {
let cacheImage = ImageCache()
cacheImage.image = downloadedImage
self.cache.setObject(cacheImage, forKey: url.absoluteString as NSString)
}
DispatchQueue.main.async {
completion(downloadedImage)
}
}
dataTask.resume()
}
解决方案
一个简单的检查是检查“空”响应返回什么。
在命令行上使用 curl 将告诉您请求的大小(用户发送的内容),以及响应的标头和下载大小。
curl --compressed -w '%{size_request} %{size_header} %{size_download}' http://example.com/
这将在响应数据之后输出 3 个数字(以字节为单位)。针对代码示例中返回404
输出的 URL 示例进行测试160 263 761
。
所以粗略地说,每个空 URL 使用大约 1.15 kB 的数据(这取决于使用的确切压缩,以及其他变量,取决于服务器)。
推荐阅读
- node.js - 如何在节点 js 中创建 http.get 同步函数
- perl - 如何使用 Perl 将带有图像的数字签名添加到 PDF 文件?
- angular - Chartjs2 堆叠条形图 onclick 并显示有关我在角度 7 中单击的部分的信息
- typescript - Ionic3 将对象添加到已经存在的 firebase 对象
- javascript - 相对于容器 div 在文本顶部堆叠 div
- mysql - 如何获取mysql中多个where子句的行数
- php - 如何在PHP中打印多维数组的记录
- javascript - 具有 HHHH:MM:DD 格式的持续时间步长计数器的文本框
- python - TypeError:is_valid() 缺少 1 个必需的位置参数
- rest - 如何获得最佳性能来处理 http 请求中的连接?