加载一个空的 url 需要多少数据?
How much data does it take to load an empty url?
我正在循环播放几个 url,但只有一些会返回图像。其他的只是空的。返回图像的 urls 可以每天更改,这就是为什么我想遍历所有 urls 的原因。我想知道加载一个空的 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()
}
一个简单的检查是检查“空”响应是什么 returns。
在命令行上使用 curl 会告诉您请求的大小(您的用户发送的内容),以及响应的 headers 和下载大小。
curl --compressed -w '%{size_request} %{size_header} %{size_download}' http://example.com/
这将在响应数据后输出3个数字(以字节为单位)。针对 returns 404
输出 160 263 761
.
的代码示例中的 URL 示例进行测试
所以粗略地说,每个空 URL 使用 ~1.15 kB 的数据(这取决于所使用的确切压缩和其他变量,具体取决于服务器)。
我正在循环播放几个 url,但只有一些会返回图像。其他的只是空的。返回图像的 urls 可以每天更改,这就是为什么我想遍历所有 urls 的原因。我想知道加载一个空的 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()
}
一个简单的检查是检查“空”响应是什么 returns。
在命令行上使用 curl 会告诉您请求的大小(您的用户发送的内容),以及响应的 headers 和下载大小。
curl --compressed -w '%{size_request} %{size_header} %{size_download}' http://example.com/
这将在响应数据后输出3个数字(以字节为单位)。针对 returns 404
输出 160 263 761
.
所以粗略地说,每个空 URL 使用 ~1.15 kB 的数据(这取决于所使用的确切压缩和其他变量,具体取决于服务器)。