什么是TCP网络?
热连接就是活跃的连接,冷连接应该是指新连接的意思。因为 TCP 接连建立需要一定的耗时,还要握手,所以 HTTP 应用保持长连接的话,就可以在多个请求之间复用一个 TCP 连接,这样只需要一次连接和握手,从而大幅度提高资源的加载速度。
从 HTTP1.1 开始,长连接和多路复用就就已经被主流浏览器支持,但是某些网站或者不标准的客户端,还是会在一次请求完成之后关闭连接,变成短连接,从而造成资源的浪费。一般来说,请求头或者响应头字段 Connection: keep-alive 用来告诉另一方自己希望保持连接,并持续复用,直到服务器设定的超时限制达到,或者客户端认为所有资源已经加载完成并主动断开连接。
HTTP2 则在原有长连接和多路复用的基础上,实现了头部压缩和封包发送,以及无序请求-响应模型。HTTP1 的多路复用必须等待前一个请求完成才发送下一个请求,这造成了同步阻塞的问题,而 HTTP2 解决了这个问题,客户端给每一个请求打上序号发给服务器,服务器响应时返回这个序号,客户端就知道这个响应属于那个请求,从而实现了无序异步的多路复用,大大提高了客户端的并发能力并加快了资源的加载。同时 HTTP1 客户端还会在检测当前连接拥塞(被前一个连接长时占用)时开新连接加载其他资源。而HTTP2因为无需等待,则可以永远复用一个连接,减少了连接资源的消耗。