我最近在使用Rust中的reqwest包构建一个简单的CL下载管理器,以便研究HTTP协议。我已经基本了解了该协议的工作方式——下载文件时要查找哪些头信息,如何验证请求是否成功等等,但是我遇到了一个问题,就是不知道HTTP响应主体中实际的字节存储在哪里。
例如,使用reqwest发送请求并得到响应的过程非常快,因此我认为下载不可能在这个阶段进行。实际消耗时间的是从主体中读取字节。但是,这个主体肯定不能存储在RAM中,因为下载大文件会使内存使用量激增。我意识到,在不使用浏览器下载文件时,数据存储的位置可能因使用不同的HTTP框架而异。但我想要的更一般的解释是:当不使用浏览器下载大型HTTP响应主体时,它们存储在哪里?
例如,使用reqwest发送请求并得到响应的过程非常快,因此我认为下载不可能在这个阶段进行。实际消耗时间的是从主体中读取字节。但是,这个主体肯定不能存储在RAM中,因为下载大文件会使内存使用量激增。我意识到,在不使用浏览器下载文件时,数据存储的位置可能因使用不同的HTTP框架而异。但我想要的更一般的解释是:当不使用浏览器下载大型HTTP响应主体时,它们存储在哪里?
self
(包括头和状态码)。没有根本的理由说明在读取正文后无法获取请求头/状态码。当然,只能读取一次正文,但它可以借用需要读取正文的标头,而不是完全消耗它们。 - nirvana-msu