首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是服务http还是http2?

我是服务http还是http2?
EN

Stack Overflow用户
提问于 2016-01-20 06:08:19
回答 1查看 2K关注 0票数 3

背景

我做在单个VPS上托管多个node.js应用程序已经有一段时间了,一切都很好。

通过使用nginx将流量路由到node.js应用程序所需的不同端口,我能够做到这一点。

升级到http2

使用最近的推动http2,我一直试图通过启用http2来支持我的应用程序。在nginx上,我通过遵循指南通过nginx做到了这一点。

问题所在

在进行基准测试时,性能似乎没有增加,而在一个为主页获取47个请求的测试网站上使用http2。

httphttp2的性能似乎相似。

理论

这可能是因为nodejs服务于http1而不是http2吗?

我必须在nginx和我的nodejs应用程序之间设置任何东西吗?例如,proxy_http_version: 2.0proxy_http_version 2.0 似乎还没到

我的nodejs应用程序与快递服务,所以我真的是得到一个http2连接还是得到一个http连接呢?

当我使用http2指示器时,它会告诉我网站使用的是蓝光指示的http2。我必须使用molnarg http2模还是nginx http2模块足够了?

希望有人有更多的开发操作经验,可以帮助我澄清这一点,并希望其他许多开发人员。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-31 11:22:45

所以有几件事需要注意。

首先,有必要回顾一下http/2与http/1.1的不同之处,在那里这将有所帮助,而在那里却没有帮助。

当需要通过低延迟连接下载大量资源时,Http/2将主要受益于延迟。还有一些其他的好处,但这是主要的性能好处。

在http/1.1下,如果您请求一个页面(例如index.html),并且它加载了10个CSS资源和10个javascript资源,那么浏览器将依次请求这20个资源中的每一个,等待请求从浏览器一直传递到服务器,然后返回,直到它可以请求下一个资源。服务器可能会非常快地获得资源(特别是对于css和javascript这样的静态资源),因此大部分时间将用于在Internet上来回旅行,而不是在两端处理它。这些数字很小(例如,100 on往返),但每次多个请求加在一起(例如,2,000 on或2秒钟,对于这个示例,-ignoring处理时间在两边)。浏览器试图通过向服务器打开多个请求(通常为4-6)来解决这个问题,因此当有一个请求队列(如这里的20个请求)时,它们可以并行地获得4-6请求,而不是等待每个请求依次完成。因此,在本例中,我们可能可以将其拆分为在4个连接上加载20个资源中的5个,所以可能只需500 to就可以全部下载它们--这是对单个连接的很好改进。但是在建立和管理这些额外的联系方面,这是个莫名其妙的问题。

Http/2旨在通过允许通过单个连接以任何顺序发送请求,而不必等待响应,从而减少这种影响。因此,浏览器可以通过一个接一个的连接请求这20个资源,而不必等待每个资源返回。因此,这些请求同时在互联网上进行并行传输。因此,在最好的情况下,我们只需要等待单个往返(100 to )的长度,才能交付所有20个资源。

关键是,对于单个资源,http/2本身并不“更快”。对很多资源来说更快。在一个完全优化的场景中(例如0MS的延迟),http/1.1和http/2请求将几乎完全相同,没有真正的性能改进。

因此,随着这个理论的支持,让我们用你的具体情况指出几点:

  1. Nginx->Node连接比浏览器->Nginx更重要。这是因为对于这种连接来说,延迟会更糟糕(假设您的Nginx和Node位于足够靠近(甚至可能是同一台服务器)的服务器上,所以这些服务器之间的延迟是最小的)。我可以想象您的Nginx->Node connection 仍然是/1.1,但这并不是真正的问题,也是因为Nginx能够同时打开多个连接到不同的节点服务器(甚至可以打开到同一节点服务器的多个连接)。
  2. 你在哪里测试,有多少跳到你的网络服务器?例如,如果在公司网络上进行测试,以及在与数据中心相同的网络上进行测试,则延迟时间将很低,因此改进可能并不明显。我从你的屏幕截图中看到,你在开发工具中设置了与“Wi”的连接,但这可能还不够慢,看不出性能的提高。
  3. 对你的网页/应用程序来说,延迟是个问题吗?这可能是你的网站是如此的优化,它得到了它需要的资源,按它需要的顺序,几乎无法跟上所有20个请求的到来。然后,无论是在浏览器中解析和呈现CSS/JavaScript,还是在服务器中处理这些请求/响应,都需要时间(例如,它必须做大量处理或连接到DB才能返回该资源)。因此,网络延迟可能实际上并不是网站的问题(不过,对于所有最简单的网站来说,这都是一个问题)。
  4. 考虑到http/2仍然处于相当危险的边缘,如何衡量改进?据我所知,Chrome开发工具还没有准确地报告http/2次,而且正在出售这些好处。而其他性能测试工具甚至可能根本不知道http/2,因此可能会退回到http/1.1。下面列出了http/2测试资源的列表,但是,就像Chrome工具可能做的那样,大多数测试工具对于测试您是否在使用http/2而不是它的任何性能好处都是有用的:https://blog.cloudflare.com/tools-for-debugging-testing-and-using-http-2/
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34892701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档