今天年初,服务器升级时,我尝试过将 HTTP/3协议配置到网站上,但当时并不成功, FireFox是正常的, Chrome Waterfall (瀑布)中的 stalled (stalled)时间较长,最后放弃。

原来是第三方开发的HTTP3扩展,可能是兼容性的问题,后来发现 nginx更新了HTTP3模块,就换成了 Nginx的官方HTTP3扩展。后来发现原来 Chrome的问题已经解决了,于是正式开始使用HTTP3,到目前为止已经使用了一个多月。

「其他分享」网站升级体验基于QUIC协议的HTTP/3插图
网站升级体验基于QUIC协议的HTTP/3

HTTP/3是 HTTP协议的第三大版本。与其前任 HTTP/1.1、 HTTP/2不同, HTTP/3协议采用了基于 UDP的 QUIC协议。这个改变主要是为了解决 HTTP/2中的队头阻塞。由于 HTTP/2在一个 TCP连接上使用多路复用,因此在 TCP拥塞控制下,很小的丢包会导致整个 TCP连接的所有数据流被阻塞。

快速 UDP网络连接(QUIC)是由谷歌开发的实验性网络传输协议,旨在提高网页传输速度。

2019年9月, Cloudflare和谷歌 Chrome都支持 HTTP/3。Firefox Nightly增加了对2019年秋季之后的支持。

IETF于2022年6月6日正式将 HTTP/3标准化为RFC9114。

《维基百科》

目前 Chrome、 FireFox和 Edge浏览器都支持 HTTP/3,用户可以通过开发者工具查看是否支持HTTP3,点击菜单,选择上传“协议”。

当然可能部分地区的运营商会针对 UDP 协议进行 QOS 限速或丢包,反而会导致了上网体验的下降,其实也是可以手动关闭浏览器的HTTP/3。

CHrome/FireFox/Edge浏览器如何关闭 HTTP/3 呢?

Google Chrome

在浏览器地址栏输入并回车:chrome://flags/#enable-quic

将 Experimental QUIC protocol 设置为 Disabled

Mozilla Firefox

在浏览器地址栏输入并回车:about:config

然后搜索 network.http.http3.enabled,如果显示为 true 则双击它使其变更为 false 即为关闭

Microsoft Edge

在浏览器地址栏输入并回车:edge://flags/#enable-quic

将 Experimental QUIC protocol 设置为 Disabled

残留小问题

上文说到我体验下来算是基本正常,其中有个小问题,就是WordPress后台,评论列表或者文章列表的分页链接,正常应该是 xxx.com//wp-admin/edit-comments.php?paged=2,但是目前却是 https://xxx.com/wp-admin/edit-comments.php?paged=2。链接中域名丢了,当然只要我把浏览器的HTTP/3关闭,就恢复正常,目前还找不到原因所在,好在也不算多影响使用,持续在nginx-quic上关注Nginx官方对HTTP/3扩展的升级,或许这个问题后续就消失了。