HTTP1.1 如何复用 tcp 连接
默认使用长连接(connection:keep-alive)。解决了复用 TCP 的问题,可以减少 TCP 的三次握手开销。
指的是用同一个 TCP 连接来发送和接受多个 http 请求/应答,而不是为了每一个新的请求/应答打开新的 TCP 连接的方法,减少了建立和关闭连接的消耗和延迟,在 HTTP1.1 中默认开启 Connection: keep-alive,一定程度上弥补了 HTTP1.0 每次请求都要创建连接的缺点
缺点:但是还是存在效率问题(HTTP2.0 通过多路复用解决)
- 串行的文件传输,只能顺序传输:当请求 a 文件时,b 文件只能等待,等待 a 连接到服务器、服务器处理文件、服务器返回文件,这三个步骤。我们假设这三步用时都是 1 秒,那么 a 文件用时为 3 秒,b 文件传输完成用时为 6 秒,依此类推。(注:此项计算有一个前提条件,就是浏览器和服务器是单通道传输)
- 连接数上限:我们假设 Apache 设置了最大并发数为 300,因为浏览器限制,浏览器发起的最大请求数为 6,也就是服务器能承载的最高并发为 50,当第 51 个人访问时,就需要等待前面某个请求处理完成。