nginx HTTP/2 模块是否支持服务器推送?

Does the nginx HTTP/2 module support Server Push?

我打算将我的 nginx 升级到支持 HTTP/2 的 1.9.6。

nginx 是否实现了HTTP/2服务器推送?

参考: https://ma.ttias.be/service-side-push-http2-nghttp2/

是的,自 2018 年 2 月 20 日发布以来 version 1.13.9,Nginx 支持 HTTP/2 服务器推送。

Nginx团队在原文中指出1.9.5 blog post当时不支持

您需要使用 nginx plus 订阅付费 https://www.nginx.com/blog/http2-r7/

Apache 免费提供

https://httpd.apache.org/docs/2.4/mod/mod_http2.html#h2push

编辑:

Nginx 自 2018 年 2 月 20 日发布的 v1.13.9 起支持 HTTP/2 服务器推送。

较早的回答:

自 2017 年 3 月 (v1.11) 起,Nginx 不支持 HTTP/2 服务器推送。

nginx 的 Owen Garrett 总结原因如下:

  • 它是 non-essential 和 http/2

  • 的可选部分
  • 如果客户端已经缓存了资源,那么将其推送给他们可能会不必要地浪费带宽。

  • 服务器推送规范将来可能会更改。

  • Link headers 因为提示很有用,但 Web 开发人员的使用率很低。

  • 服务器推送已作为 SPDY 的一部分提供,并没有被许多 Web 开发人员使用。

阅读他的原始评论here. This table 准确描述了服务器提示与服务器推送的优缺点。

就我个人而言,这让我很失望,因为我认为这对于愿意花时间优化页面速度的 Web 开发人员来说是一项有价值的功能。我也知道一些像 Cloudflare 这样的大型 CDN 已经在 nginx 中实现了他们自己的版本来优化页面下载。

自 2018 年 2 月 8 日起,已将对 http/2 服务器推送的支持添加到 nginx:

https://hg.nginx.org/nginx/rev/641306096f5b