Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么HTTP/2多路复用比HTTP/1.1更好?_Http_Http2 - Fatal编程技术网

为什么HTTP/2多路复用比HTTP/1.1更好?

为什么HTTP/2多路复用比HTTP/1.1更好?,http,http2,Http,Http2,在HTTP/1.1的情况下,一个网页有多个资源,每个文件将创建到服务器端的连接以检索数据、js、css等。我认为工作模式类似于多进程或多线程,并行工作 但在HTTP/2的情况下,每个域在一个网页中只有一个连接,即使它可以处理来自客户端浏览器的多个请求,也可能类似于单线程 我不知道为什么http/2的性能比http/1.1好?创建TCP连接是一项代价高昂的操作,它类似于复制一个大文件和数千个小文件,或者移动一个大盒子和许多小盒子对于网页而言,HTTP/2多路复用比HTTP/1.1更高效的原因与打开

在HTTP/1.1的情况下,一个网页有多个资源,每个文件将创建到服务器端的连接以检索数据、js、css等。我认为工作模式类似于多进程或多线程,并行工作

但在HTTP/2的情况下,每个域在一个网页中只有一个连接,即使它可以处理来自客户端浏览器的多个请求,也可能类似于单线程


我不知道为什么http/2的性能比http/1.1好?

创建TCP连接是一项代价高昂的操作,它类似于复制一个大文件和数千个小文件,或者移动一个大盒子和许多小盒子

对于网页而言,HTTP/2多路复用比HTTP/1.1更高效的原因与打开TCP连接的成本关系不大

在HTTP/1.1中,浏览器通常每个域最多打开6个连接。 在这些连接打开后,它们将保持打开状态并反复使用,直到它们闲置

然而,即使在那些连接被打开之后,HTTP/2也比HTTP/1.1快,因此在这里显然不是TCP连接打开的成本

今天,一个典型的web页面最多可以从源服务器下载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的好处(您可以观看解释多路复用效果的演示)。

一辆公共汽车比30辆汽车好。每次打开连接时,您都必须完成握手,这是它成本高的原因之一。多核CPU能在多线程模式下工作吗?我认为如果它不能同时执行握手?@scott1028更多的是关于您的网络连接,即使您的CPU可以同时执行某些操作,您也必须通过网络接收数据,这在某种程度上是至关重要的。您必须通过网络进行大量的握手,而使用http2,您只需进行握手即可once@scott1028当然,如果你有多个连接可用,你可以使用它,但这不是一个日常故事,不过,我要补充一点,在http/1.1中,假设浏览器打开每个资源的tcp连接,与http/2中每个资源打开一个流的单个tcp连接相比,会产生一些开销和延迟。基本上,出于相同的原因-往返时间,因为每个资源的TCP连接将为握手增加每个资源的额外往返时间。因此,在另一个假设的例子中,一个普通浏览器和一个只有6个资源可供下载的页面,两者之间的差异将纯粹在于TCP设置成本,总体而言,差异非常小。