我正在尝试调试HTTP/1.1和HTTP/2之间的差异。
在Chrome或Chromium中是否有禁用HTTP/2的可能性?
我在Chrome 56中没有找到此选项标志。 我尝试了带有标志--disable-http2
的Chromium 58:
./Chromium.app/Contents/MacOS/Chromium --disable-http2
使用此标志后,内容仍然使用HTTP/2协议进行交付:
我正在尝试调试HTTP/1.1和HTTP/2之间的差异。
在Chrome或Chromium中是否有禁用HTTP/2的可能性?
我在Chrome 56中没有找到此选项标志。 我尝试了带有标志--disable-http2
的Chromium 58:
./Chromium.app/Contents/MacOS/Chromium --disable-http2
使用此标志后,内容仍然使用HTTP/2协议进行交付:
值得一提的是,该标志位有效。
问题在于,您需要退出Chrome中的所有内容才能使其生效。包括插件shim、其他Chrome选项卡等等。
仅添加命令行开关是不够的。
disable-http2
还是所有标志都适用? - Everettss我曾经看到过相同的问题,由于代理模式和流模式下运行的防火墙而导致。
防火墙会缓冲整个文件,这样就可以扫描它,然后传递它,而不是扫描单个数据包。
https://docs.fortinet.com/document/fortigate/6.4.4/administration-guide/721410/inspection-modes
这个问题只会在使用http2时出现,可能与http请求优先级没有被正确处理或者强制单线程有关。
我们会有一个低优先级的视频请求开始阻塞,然后开始导致其他文件下载被延迟。然后后台会有一个高优先级请求的api poler进来。在几个高优先级请求被阻塞后,Chrome会取消低优先级的视频。
这种情况也会发生在其他情况下,但是对于我们来说,视频使其非常容易重现。
https://medium.com/dev-channel/javascript-loading-priorities-in-chrome-57c54cfa6672 https://blog.cloudflare.com/better-http-2-prioritization-for-a-faster-web/ https://blog.cloudflare.com/http-2-prioritization-with-nginx/ https://calendar.perfplanet.com/2018/http2-prioritization/
我们在防火墙上将其设置回流模式,问题就消失了。 随后,在chrome网络瀑布图中,所有下载都并行进行,没有任何阻塞或停顿。