当客户端拒绝或不支持时,HTTP/2 服务器推送

当客户端拒绝或不支持时,HTTP/2 服务器推送

所以我想知道是否启用服务器推送。

我知道 HTTP/2 是从 HTTP/1 升级而来的,这意味着任何不支持 HTTP/2 的客户端都会回退到 HTTP/1 并继续正常运行。

但是,当客户端支持 HTTP/2,但不支持服务器推送或主动拒绝/限制推送请求时,会发生什么?

我担心某些资源可能无法因此转移给客户。我应该为这种可能性做好准备吗?或者这不是问题吗?

答案1

客户端将在建立 HTTP/2 连接期间将 SETTINGS_ENABLE_PUSH 设置为 0,以表明其未启用推送功能。

来自HTTP/2 规范

如果对等端点的 SETTINGS_ENABLE_PUSH 设置设为 0,则不得发送 PUSH_PROMISE。已设置此设置并已收到确认的端点必须将收到 PUSH_PROMISE 帧视为类型为 PROTOCOL_ERROR 的连接错误(第 5.4.1 节)。

但是,如果网站所有者过度推送客户端可能不需要或已经缓存的资源,则 HTTP/2 推送很容易被网站所有者滥用。客户端可以重置流以表明他们不需要推送的资源,但这并不是好事,因为这仍然是客户端和服务器的额外工作。

网站所有者可以使用各种方法来确保他们只推送适当的内容。我在这篇博文中详细介绍了一种简单的方法:https://www.tunetheweb.com/performance/http2/http2-push/。HTTP 工作组正在研究缓存摘要最终应该将实现这一目标的方法正式化,但目前仍在定义中。

相关内容