首页 > 解决方案 > 加载一个空的 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()
    }

标签: iosswiftdownloadurlsessionuser-data

解决方案


一个简单的检查是检查“空”响应返回什么。

在命令行上使用 curl 将告诉您请求的大小(用户发送的内容),以及响应的标头和下载大小。

curl --compressed -w '%{size_request} %{size_header} %{size_download}' http://example.com/

这将在响应数据之后输出 3 个数字(以字节为单位)。针对代码示例中返回404输出的 URL 示例进行测试160 263 761

所以粗略地说,每个空 URL 使用大约 1.15 kB 的数据(这取决于使用的确切压缩,以及其他变量,取决于服务器)。


推荐阅读