HTTP长连接和短连接的主要区别如下:
- 连接复用:长连接可以复用同一个TCP连接发起多个请求;短连接每个请求需要建立新的连接。
- 性能:长连接可以减少连接建立和断开的开销,提高性能;短连接需要频繁创建连接,性能较低。
- 流水线化:长连接支持将多个请求管道化发起,提高并发量;短连接每个连接只能发起一个请求。
- 默认策略:HTTP1.1默认使用长连接;HTTP1.0默认使用短连接,需要手动设置长连接。
其他:长连接需要设置合理的Keep-Alive超时时间,防止空闲连接占用资源;短连接更容易遭受SYN Flood攻击。
代码示例:
HTTP1.0短连接:
GET /1 HTTP/1.0
Connection: Close
HTTP/1.0 200 OK
GET /2 HTTP/1.0
Connection: Close
HTTP/1.0 200 OK
HTTP1.1长连接:
GET /1 HTTP/1.1
Connection: Keep-Alive
HTTP/1.1 200 OK
GET /2 HTTP/1.1
HTTP/1.1 200 OK
设置Keep-Alive超时:
Connection: Keep-Alive
Keep-Alive: timeout=5, max=1000