作者:被爱的超萌baby | 来源:互联网 | 2023-02-05 03:08
在HTTP/1.1案例中,一个网页有多个资源,每个文件将创建一个到服务器端的连接来检索数据,js,css等.我认为工作模式类似于多进程或多线程,工作并行.
但是在HTTP/2 Case中,每个域在网页中只有一个连接,即使它可以处理来自客户端浏览器的多个请求,也许它类似于单个线程.
我不知道为什么http/2的性能比http/1.1更好?
1> sbordet..:
HTTP/2多路复用比HTTP/1.1对网页更有效的原因与打开TCP连接的成本几乎没有关系.
在HTTP/1.1中,浏览器通常每个域最多打开6个连接.在这些连接打开后,它们会一直打开并一遍又一遍地重复使用,直到它们闲置为止.
然而,即使在打开这些连接之后,HTTP/2也比HTTP/1.1快,因此显然不是这里开放TCP连接的成本.
今天的典型网页可能有多达100个资源要从源服务器下载.让我们保持简单,假设客户端和服务器之间有200毫秒的往返.为了在HTTP/1.1下载页面,浏览器必须下载主HTML页面(1个往返),然后解析HTML页面并安排下载100个资源 - 但它只有6个连接.所以浏览器发送前6个请求,然后等待它们返回(1个往返); 然后另外6个请求,然后等待他们回来(1往返); 在这个简单的模型中,要下载100个资源,浏览器需要1 + 17往返,每个200毫秒,这意味着3.6秒.
在HTTP/2中,浏览器发出对HTML页面的请求,但是由于HTTP/2被多路复用,因此可以自由地对100个资源进行所有请求而无需等待.在这个简单的模型中,要下载100个资源,浏览器需要1 + 1往返,即400毫秒,下载时间加速10倍.
现在,事情并不像上面描述的那么简单,但由于多路复用仍然会产生相当大的影响.
您可以通过在线观看示例(此处和此处)来自己查看此影响,并且您可以观看关于此和其他HTTP/2优势的HTTP/2演示文稿(您可以在此处观看解释多路复用效果的演示).