我正在尝试迁移到http / 2。我已经设置了一个Wordpress网站并配置了NGINX来使用http / 2(使用SSL / TLS)来服务它。
我对http / 2的理解是,默认情况下,它使用一个连接来传输大量文件 - 而不是打开新连接并为每个文件重复SSL握手。
为了达到http / 1.x的类似效果,NGINX提供了keepalive指令。
使用http / 2时,使用keepalive指令是否有意义?使用“nginx -t”检查我的配置文件时,如果包含它,则报告没有错误。但它有什么影响吗?基准测试显示没有差异。
答案 0 :(得分:12)
你误解了这是如何运作的。
让活着的在请求之间
。当您下载网页时,它会下载HTML页面并发现它需要另外20个资源(CSS文件,javascript文件,图像,字体等等)。
在HTTP / 1.1下,您只能同时请求其中一个资源,因此网络浏览器通常会启动另外5个连接(总共6个连接)并请求这20个资源中的6个。然后,当这些连接释放时,它会请求剩余的14个资源。是的,保持活动有助于这些请求,但这不是它的唯一用途,我们将在下面讨论。设置这些连接的开销很小但很明显,并且只能一次请求这20个资源中的6个资源。这就是为什么HTTP / 1.1对于今天网络的使用效率低下的原因,其中典型的网页由100个资源组成。
在HTTP / 2下,我们可以在同一个连接上同时触发所有20个请求,因此可以获得一些好处。从技术上讲,你不会真正受益于这些之间的保持联系,因为连接仍在使用,直到它们全部到达 - 尽管仍然可以从第一个HTML请求和其他20个请求之间的小延迟中受益。
然而,在初始加载之后,可能会有更多请求。要么是因为您正在浏览网站,要么是因为您与该页面进行了交互,而且它会增加XHR api调用。无论是在HTTP / 1.1还是HTTP / 2上,这些都将受益于保持活动。
所以HTTP / 2并不能否定保持活动的需要。它不需要多个连接(除其他外)。
所以答案是始终使用保持活动,除非你有充分的理由不这样做。您正在做什么类型的基准测试来说它没有区别?