除了多路复用和服务器推送之外,是什么让http/2比http/1更快?

除了多路复用和服务器推送之外,是什么让http/2比http/1更快?,http,http2,http-1.1,Http,Http2,Http 1.1,我能理解为什么多路复用和服务器推送有助于加快网页加载并减少服务器端的工作量。但我还了解到,二进制协议,头压缩,以及请求的优先级也有助于http/2优于http/1。这三个功能实际上是如何促进改进的?二进制协议 这实际上对IMHO没有多大帮助,除了允许(这对性能有很大帮助)。是的,对一个程序来说,解析二进制数据包比解析文本更容易,但我不认为这会使性能大为提高。正如我所说,使用二进制的主要原因是为了其他好处(多路复用和报头压缩)和使解析比性能更容易 标题压缩 这可能会产生巨大的潜在影响。大多数请求(

我能理解为什么
多路复用
服务器推送
有助于加快网页加载并减少服务器端的工作量。但我还了解到,
二进制协议
头压缩
,以及请求的
优先级
也有助于
http/2
优于
http/1
。这三个功能实际上是如何促进改进的?

二进制协议

这实际上对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)中得到更多的东西。如果有兴趣了解有关此主题的更多信息,请查看我的网站。

是否可能重复?