为什么原始HTTP请求非常慢?

为什么原始HTTP请求非常慢?,http,rust,Http,Rust,当我尝试使用套接字发送HTTP请求包时,速度非常慢。获得回复大约需要30秒,而在具有相同基本代码的任何其他语言中,则需要1秒 use std::old_io::BufferedStream; use std::old_io::TcpStream; fn main() { let mut reddit = BufferedStream::new(TcpStream::connect("reddit.com:80").unwrap()); reddit.write_all(form

当我尝试使用套接字发送HTTP请求包时,速度非常慢。获得回复大约需要30秒,而在具有相同基本代码的任何其他语言中,则需要1秒

use std::old_io::BufferedStream;
use std::old_io::TcpStream;

fn main() {
    let mut reddit = BufferedStream::new(TcpStream::connect("reddit.com:80").unwrap());
    reddit.write_all(format!("GET / HTTP/1.1{0}User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 zlib/1.2.3.4 libidn/1.23 librtmp/2.3{0}Host: www.reddit.com{0}Accept: */*{0}{0}", "\r\n").as_bytes());
    reddit.flush();
    let reply = reddit.read_to_string().unwrap();
    println!("{}", reply);
}

这是Rust中的一个bug吗?

这是因为您使用的是HTTP 1.1,而HTTP 1.1。30秒可能是另一端服务器的超时时间


切换到HTTP 1.0或正确关闭连接,可能通过使用头连接:close。执行这两种操作都可以将运行时间减少到约170ms,而不启用任何编译时优化,而编译时优化在这里可能不会起到多大作用。

这是因为您使用的是HTTP 1.1。30秒可能是另一端服务器的超时时间


切换到HTTP 1.0或正确关闭连接,可能通过使用头连接:close。执行这两项操作中的任何一项都可以将运行时间减少到约170ms,而不启用任何编译时优化,而编译时优化在这里可能不会起到多大作用。

能否详细说明连接:close?我似乎找不到它的任何参考资料。它是标准库的一部分吗?Edit:nvm-我知道Connection:close是HTTP 1.1请求中包含的头,以避免关闭持久连接。您能详细介绍一下Connection:close吗?我似乎找不到它的任何参考资料。它是标准库的一部分吗?Edit:nvm-我知道Connection:close是HTTP 1.1请求中包含的头,以避免关闭持久连接。