加载一个空的 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 的数据(这取决于所使用的确切压缩和其他变量,具体取决于服务器)。