### 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 默认开启                            |