### HTTP 长连接和短连接的区别

什么是 HTTP 短连接？

HTTP 短连接指的是浏览器和服务器每进行一次 HTTP 操作（如获取一个 HTML 文件、一张图片或一个 CSS 文件），就建立一次 TCP 连接，传输完毕后立即断开连接

工作流程：

1. 建立连接：客户端（浏览器）向服务器发起 TCP 连接（三次握手）
2. 发送请求：客户端发送 HTTP 请求
3. 发送响应：服务器发送 HTTP 响应
4. 断开连接：服务器和客户端立即断开 TCP 连接（四次挥手）
5. 重复：如果客户端还需要请求其他资源，就必须重复上述所有步骤

特点：

- 优点：实现简单，服务器在请求处理完毕后立即释放资源，适合请求频率较低的场景
- 缺点：
  - 性能开销大：每次请求都需要经过 TCP 三次握手和四次挥手，这会增加大量的网络延迟
  - 资源消耗高：大量的连接建立和断开操作会消耗服务器和客户端的 CPU 和内存资源

什么是 HTTP 长连接？

HTTP 长连接（也称作 HTTP Keep-Alive 或 HTTP Persistent Connection）指的是浏览器和服务器建立 TCP 连接后，在一次请求/响应完成后，不会立即断开连接，而是保持连接状态。后续的请求和响应可以在这个已建立的连接上继续进行

工作流程：

1. 建立连接：客户端向服务器发起 TCP 连接（三次握手）
2. 发送请求：客户端发送 HTTP 请求
3. 发送响应：服务器发送 HTTP 响应
4. 保持连接：连接保持打开状态
5. 重复：客户端继续在这个连接上发送下一个请求，直到客户端或服务器决定关闭连接
6. 断开连接：当某个条件满足时（例如达到超时时间或请求数量上限），连接才会断开

特点：

- 优点：
  - 性能更高：省去了大量的 TCP 连接建立和断开的开销，显著减少了网络延迟
  - 资源利用率高：减少了服务器的 CPU 和内存资源消耗
- 缺点：
  - 资源占用：服务器需要为每个活跃的连接维护状态，如果连接数量过多，可能会占用大量服务器资源
  - 实现复杂：服务器端需要更精细的超时管理机制

特性 | 短连接 (Non-Persistent) | 长连接 (Persistent)
--- | --- | ---
连接管理 | 一次请求/响应后立即断开 | 保持连接，重复利用
TCP 开销 | 高（每次请求都需建立/断开） | 低（只在首次建立和最后断开）
性能 | 低，网络延迟高 | 高，传输效率更高
应用场景 | 访问频率低的静态网页 | 频繁请求、动态内容多的网站，如电商、社交媒体
HTTP 版本 | HTTP/1.0 默认 | HTTP/1.1 默认开启