HTTP3 Part 9:HTTP Alt-Svc Header

Alt-Svc 帮助客户端平滑过渡到HTTP3服务。

在HTTP/3的上下文中,Alt-Svc头部对于连接的引导非常重要,因为HTTP/3需要QUIC传输协议,而客户端可能不直接支持QUIC,或需要连接到不同的端点。客户端可以连接到兼容HTTP/3的替代服务,从而可能提供更好的性能或可靠性。

Alt-Svc

Alt-Svc 全称为“Alternative-Service”,直译为“备选服务”。该头部列举了当前站点备选的访问方式列表。一般用于在提供“QUIC”等新兴协议支持的同时,实现向下兼容。

在收到指示 HTTP/3 支持的有效标头后,浏览器将缓存此标头,并从那时起尝试设置 QUIC 连接。一些客户端会尽快执行此操作(即使在初始页面加载期间 - 见下文),而其他客户端会等到现有的 TCP 连接关闭。这意味着浏览器只有在首先通过 HTTP/2 或 HTTP/1.1 下载了至少一些资源后才会使用 HTTP/3。

语法
Alt-Svc: clear
Alt-Svc: <service-list>; ma=<max-age>
Alt-Svc: <service-list>; ma=<max-age>; persist=1

<max-age>可选
当前访问方式的有效期,超过该时间后,服务端将不保证该访问方式依旧可用,客户端应当重新获取更新后的 Alt-Svc 列表。单位为秒,默认值为 24 小时(86400)。

persist可选
可选参数,用于标识当前访问方式在网络环境改变时或者会话间始终保持。

Alt-Svc的另一个用途是负载均衡,可用于在不同的服务器或服务间分配负载,而不影响用户的请求路径。

对比 HTTP 重定向

HTTP 重定向,客户端会改变其请求的 URL,指向新的资源位置。

不同于使用 30x 状态码进行重定向分流,HTTP Alternative Services 只改变浏览器获取资源的网络方式,上层应用不会感觉到任何变化。

参考

Built with Hugo
Theme Stack designed by Jimmy