HTTP 长连接和短连接的区别
什么是 HTTP 短连接?
HTTP 短连接指的是浏览器和服务器每进行一次 HTTP 操作(如获取一个 HTML 文件、一张图片或一个 CSS 文件),就建立一次 TCP 连接,传输完毕后立即断开连接
工作流程:
- 建立连接:客户端(浏览器)向服务器发起 TCP 连接(三次握手)
- 发送请求:客户端发送 HTTP 请求
- 发送响应:服务器发送 HTTP 响应
- 断开连接:服务器和客户端立即断开 TCP 连接(四次挥手)
- 重复:如果客户端还需要请求其他资源,就必须重复上述所有步骤
特点:
- 优点:实现简单,服务器在请求处理完毕后立即释放资源,适合请求频率较低的场景
- 缺点:
- 性能开销大:每次请求都需要经过 TCP 三次握手和四次挥手,这会增加大量的网络延迟
- 资源消耗高:大量的连接建立和断开操作会消耗服务器和客户端的 CPU 和内存资源
什么是 HTTP 长连接?
HTTP 长连接(也称作 HTTP Keep-Alive 或 HTTP Persistent Connection)指的是浏览器和服务器建立 TCP 连接后,在一次请求/响应完成后,不会立即断开连接,而是保持连接状态。后续的请求和响应可以在这个已建立的连接上继续进行
工作流程:
- 建立连接:客户端向服务器发起 TCP 连接(三次握手)
- 发送请求:客户端发送 HTTP 请求
- 发送响应:服务器发送 HTTP 响应
- 保持连接:连接保持打开状态
- 重复:客户端继续在这个连接上发送下一个请求,直到客户端或服务器决定关闭连接
- 断开连接:当某个条件满足时(例如达到超时时间或请求数量上限),连接才会断开
特点:
- 优点:
- 性能更高:省去了大量的 TCP 连接建立和断开的开销,显著减少了网络延迟
- 资源利用率高:减少了服务器的 CPU 和内存资源消耗
- 缺点:
- 资源占用:服务器需要为每个活跃的连接维护状态,如果连接数量过多,可能会占用大量服务器资源
- 实现复杂:服务器端需要更精细的超时管理机制
特性 | 短连接 (Non-Persistent) | 长连接 (Persistent) |
---|---|---|
连接管理 | 一次请求/响应后立即断开 | 保持连接,重复利用 |
TCP 开销 | 高(每次请求都需建立/断开) | 低(只在首次建立和最后断开) |
性能 | 低,网络延迟高 | 高,传输效率更高 |
应用场景 | 访问频率低的静态网页 | 频繁请求、动态内容多的网站,如电商、社交媒体 |
HTTP 版本 | HTTP/1.0 默认 | HTTP/1.1 默认开启 |