今天年初升级服务器的时候,尝试给网站配置了HTTP/3协议,不过当时没有完全成功,FireFox下正常,Chrome下Waterfall(瀑布)中的stalled(已停止)时间较久,最后就放弃了。
原来使用的是第三方开发的HTTP3扩展,可能是兼容问题吧,后来正好发现nginx对HTTP3模块进行了更新,于是就换用了Nginx官方的HTTP3扩展。换了之后就发现原来Chrome下的问题消失了,于是就正式开始使用HTTP3,目前用了一个多月,算是基本正常。
什么是 HTTP/3 呢?
HTTP/3是第三个主要版本的HTTP协议。与其前任HTTP/1.1和HTTP/2不同,在HTTP/3中,将弃用TCP协议,改为使用基于UDP协议的QUIC协议实现。此变化主要为了解决HTTP/2中存在的队头阻塞问题。由于HTTP/2在单个TCP连接上使用了多路复用,受到TCP拥塞控制的影响,少量的丢包就可能导致整个TCP连接上的所有流被阻塞。
QUIC(快速UDP网络连接)是一种实验性的网络传输协议,由Google开发,该协议旨在使网页传输更快。
2019年9月,HTTP/3支持已添加到Cloudflare和Google Chrome(Canary build)。Firefox Nightly在2019年秋季之后添加支持。
2022年6月6日,IETF正式标准化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后台,评论列表或者文章列表的分页链接,正常应该是 https://www.weisay.com/blog/wp-admin/edit-comments.php?paged=2,但是目前却是 https://blog/wp-admin/edit-comments.php?paged=2。链接中域名丢了,当然只要我把浏览器的HTTP/3关闭,就恢复正常,目前还找不到原因所在,好在也不算多影响使用,持续在nginx-quic上关注Nginx官方对HTTP/3扩展的升级,或许这个问题后续就消失了。
在线检测网站
https://geekflare.com/tools/http3-test
PS:可能由于我域名首页做了301跳转,http3check.net 无法正常测出http/3,geekflare.com就能正常测出。
这个还没用过,暂时不敢去体验,怕整不好有耽误一天时间
时隔半年, 服务器换了镜像, 自己编译安装了之后发现站内请求全是 http/1.1 的(但是貌似支持 h3), 不知道哪里的问题. h2 模块好像没装, 和这个会有关系吗?
listen 443 quic reuseport;
listen 443 ssl;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
好东西h3,不过我现在还年php8都还没升级
唉,我必须用 CDN ,所以HTTP/3就算用上也是自娱自乐,不过,CloudFlare的 CDN 好像自带HTTP/3支持,可惜国内体验不到!国内网站卫士好像连HTTP/2都不支持!
@明月登楼CloudFlare的CDN是支持http3的,国内腾讯和阿里的CDN好像都支持了,不过我没有用过,这些大厂肯定都会跟进的。
@William这次用云盾就因为源服务器TLSv1.3不兼容,造成节点返回502,郁闷死了!
目前http3还处于草案阶段,博客网站使用http3的速度提升对用户基本不可感。
@林林http3目前基本已经成型了,我使用下来提升并不明显,用户基本难感知,不用毕竟是新的技术还是可以试用的。
@林林是的,很多国内的 CDN 连TLSv1.3都不支持,HTTP/2都支持的不多!
阿里云CDN的QUIC另收费!
@TeacherDu恩,我没有cdn,流量不大,目前访问速度还行。
又拍CDN支持开启这个,不过不支持我中文域名。
腾讯云CDN HTTP/3 上次在内测 没内测资格用不了。
nginx 好像要编译模块,我就自己懒得折腾没用上 哈哈, 找个时间我重新装下 体验一下。
@叶开恩,国内的云服务器也都开始慢慢支持http/3了。
我也想弄来着,但查了下,貌似还有设备不支持,挺头疼,放放弃了。跟webp一样,虽说好多设备支持了,但还是有个别不行,就像ios14以下,就不行。
@林羽凡确实是的,好像目前Apache还没有对QUIC支持的公开声明。Apache比较求稳,应该没有那么快。