与HTTP2 Server Push相比,HTTP2多路复用是否有任何显着的性能优势?

时间:2016-10-12 16:29:43

标签: http2 server-push

HTTP2多路复用使用相同的TCP连接,从而消除了到同一主机的连接时间。

但是,除了HTTP2多路复用在请求每个资源时所需的往返时间外,HTTP2 Server Push还有任何显着的性能优势。

2 个答案:

答案 0 :(得分:2)

我做了一个关于此的演示文稿,您可以找到here

特别是,演示(从36:37开始)显示了单独使用多路复用,然后添加HTTP / 2推送可以带来的好处。

Spoiler:HTTP / 2多路复用和Push的组合相对于HTTP / 1.1产生了惊人的更好结果。

然后,每个案例都不同,所以你必须实际衡量你的情况。 但是HTTP / 2产生比HTTP / 1.1更好的性能的潜力非常大,许多(大多数?)案例将从中受益。

答案 1 :(得分:1)

我不确定你在这里究竟是什么问题,或者它是否适合StackOverflow但是会尝试回答这个问题。如果这不是您正在寻找的答案,请重新说明问题,以便我们了解您正在寻找的是什么。

你是对的,HTTP / 2使用多路复用,这确实消除了对多个连接的需求(以及设置和管理它们所需的时间和资源)。然而,它不仅仅是因为它不受限制(浏览器通常会将连接限制为每个主机4-6个),并且还允许“类似”连接(相同的IP和相同的证书但不同的主机名)以共享连接。基本上它解决了HTTP / 1的请求/响应方法意味着的资源排队,并减少了HTTP / 1需要的有限多个连接的需要作为变通方法。这也减少了对分片,精灵文件,串联等其他解决方法的需求。

是的HTTP / 2服务器推送保存一次往返。因此,当您请求网页时,它会发送绘制页面所需的HTML和CSS,因为服务器知道您将需要CSS,因为只需向您发送HTML,等待您的Web浏览器获取它,解析它,请参阅它需要CSS并请求CSS文件并等待它下载。

我不确定你是否暗示往返时间太短,HTTP / 2服务器推送几乎没有增加,因为现在由于HTTP / 2多路复用而没有延迟请求文件?如果不是这样的话 - 在推送资源方面会有很大的收获,特别是阻止浏览器在屏幕上绘制单个内容之前等待的资源。虽然多路复用减少了发送请求的延迟,但它并没有减少传送到服务器的请求的延迟,现在服务器响应并发送回来。虽然听起来很小,但它们很明显,让网站感觉很慢。

所以是的,目前,HTTP / 2服务器推送的主要收益是减少往返时间(对于关键资源基本上为零)。

然而,我们处于初期阶段,并且出于性能或其他原因可能存在其他用途​​。例如,你可以使用它作为内容优先级的一种方式,这样一个重要的图像可以提前推送,如果没有这个,浏览器可能会首先请求CSS和Javascript并将图像保留到以后。服务器推送也可以否定对内联CSS的需求(这会使页面包含样式表的副本,并且可能需要Javascript然后加载正确的CSS文件) - 另一种HTTP / 1.1解决方法的性能。我认为看看未来几年HTTP / 2服务器推送会发生什么将会非常有趣。

说,HTTP / 2服务器推送仍然存在一些重大挑战。最重要的是,如何通过推送浏览器已经缓存的资源来防止浪费带宽?可能会为此添加摘要HTTP标头,但仍在讨论中。对于Web浏览器,Web服务器和Web开发人员而言,哪种方法能够以最佳方法实现HTTP / 2服务器推送? HTTP/2 spec对于如何实现这一点有点模糊,这使得它可以用于不同的Web服务器,特别是提供不同的方法来向服务器发送信号以推送资源。

正如我所说,我认为HTTP / 2的这一部分可能会导致一些非常有趣的应用程序。我们生活在有趣的时代......