首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么使http/2比http/1的速度超过了多路复用和服务器推送?

是什么使http/2比http/1的速度超过了多路复用和服务器推送?
EN

Stack Overflow用户
提问于 2018-12-04 17:25:59
回答 1查看 338关注 0票数 1

我可以理解为什么multiplexingserver push帮助加快了网页的加载速度,减少了服务器端的工作量。但我也了解到,binary protocolheader compressionprioritization of requests也有助于http/2优于http/1的性能改进。这三个特性对这些改进有何实际贡献?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 22:42:54

二进制协议

实际上,除了允许使用多路复用 (这确实对性能有很大帮助)之外,这对IMHO并没有多大帮助。是的,对于一个程序来说,解析二进制数据包比文本更容易,但我不认为这会带来巨大的性能自夸。正如我所说的,采用二进制的主要原因是为了其他好处(多路复用和头压缩),并使解析比性能更容易。

标头压缩

这可能会产生巨大的潜在影响。大多数请求(和响应)都重复大量数据。因此,通过压缩头部(通过跨请求使用引用替换重复的头,而不是在请求(如HTTP压缩工作)中压缩),可以大大减少请求的大小。(但是对于那些头通常不是整个响应的重要部分的响应,则不是这样)。

请求的优先排序

这是HTTP/2中比较有趣的部分之一,它具有巨大的潜力,但尚未被优化。想象一下:假设你有3个关键的CSS文件和3个巨大的图片要下载。在HTTP/1.1下,将打开6个连接,所有6个项目都将并行下载。这似乎很好,但这意味着不太关键的图像文件正在消耗带宽,这将更好地用于关键的CSS文件。使用HTTP/2,您可以说“首先以高优先级下载关键的CSS,并且只有在它们完成后,查看这3个映像文件”。不幸的是,尽管HTTP/2有一个优先级模型,它允许任意复杂的优先级(有些人认为太复杂了!) 浏览器和服务器目前没有很好地使用它 (而且网站所有者和web开发人员目前几乎没有什么方法来影响它)。事实上,糟糕的优先级决定实际上会使HTTP/2比HTTP/1.1慢,因为6连接限制被取消,数百个资源都可以并行下载,所有资源都在争夺相同的带宽。我怀疑在实现方面将会有更多的研究和改变,但是应该不需要在规范中有太多的变化,因为它已经允许非常复杂的优先级,正如我提到的。

我们已经对HTTP/1.1进行了几十年的优化,并从中挤出了很多。我怀疑我们还有更多的东西需要摆脱HTTP/2 (当HTTP/3也出现的时候)。如果有兴趣了解更多关于这个主题的内容,请查看我的即将出版的书

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53618419

复制
相关文章

相似问题

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