调用 HTTPS API 默认是会用会话复用的吗

2020-08-29 19:44:00 +08:00
 holinhot

如果不复用,并发上千不,是得上千次握手,好像是很浪费性能。浏览器应该是会复用,不然加载几百图片都得握手。

1041 次点击
所在节点    问与答
6 条回复
arloor
2020-08-29 22:04:25 +08:00
http1.1 做的事情是让一条 tcp 连接能传输多个请求-响应(不过多个请求一定是串行的)
http2 做的事情是一条 tcp 链接能同时并行多个请求-响应

从 http1.0 到 http1.1 再到 http2,一直在追求更有效的链接复用。而 https 其实就是 http over tls,也是遵循 http 协议的。目前 http2 也比较普遍了,也就是并行的多路复用现在在浏览器中已经比较普遍了。对于图片加载,js 资源加载,css 资源加载这种静态资源,或者服务端渲染的东西,连接复用程度还是比较高的。

但是,Ajax 这种请求,不能确定是否使用了 http 的长连接,如果是短连接(一个请求-响应后就断开),则没有复用 tcp 连接。
holinhot
2020-08-30 02:09:36 +08:00
@arloor 例如使用 curl -i https://google.com 这样执行 100 次,SSL 会话是会复用的吗
holinhot
2020-08-30 02:10:32 +08:00
@holinhot 似乎 curl 退出后并不会保存任何会话
msg7086
2020-08-30 09:27:20 +08:00
都退出了还怎么保存。会话的前提是端口上的连接还在。程序退出了,连接当然都会被杀掉。
ysc3839
2020-08-30 19:20:44 +08:00
要看具体是什么 http 库的,浏览器显然会复用连接。
至于命令行的 curl,是不会的,而且操作系统应该有限制,进程退出后会断开 TCP 连接。
holinhot
2020-08-30 22:29:14 +08:00
@ysc3839 那个 IOS 或安卓 App 内调接口会复用连接吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/702464

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX