HTTP/2 机架支持 / Rails

HTTP/2 Support in Rack / Rails

HTTP/2 由 all major browsers. There are implementations shipping in major web servers like Apache and nginx 发布和支持。

但对于我们 Rubyists 来说,目前的选择似乎非常有限。曾几何时(2014 年 12 月),Aaron Patterson exploring ideas for supporting HTTP/2 in Rack 2.0, but that hasn't yet materialized. He's also posted a few gists with possibilities for Puma and WEBrick。这就是我设法找到的所有内容。

我的问题大致是:如果我有兴趣在 Rails 应用程序中使用 HTTP/2,存在哪些选项,它们包括 HTTP/2 的哪些功能,以及是否有任何其中有哪些已准备好投入生产?

如果你想声称支持 HTTP/2 本身,你可以 运行 NGinX 与 HTTP/2 并使用 Ruby 后端,大致与正常情况一样(https://www.nginx.com/blog/how-nginx-plans-to-support-http2/)。不过,这不会为您提供 HTTP/2 特定的功能,例如在没有客户端请求的情况下从服务器推送资产。

我相信它 为您提供您关心的基本 HTTP/2 功能,每个连接的多个请求(没有慢启动)和连接上的多路复用(不要不需要多个连接。)

太好了。

截至 2018 年 4 月,Rails v5.2.0 现在包括 HTTP/2 在主请求(资产推送)之前发送资产的早期提示:

https://weblog.rubyonrails.org/2018/4/9/Rails-5-2-0-final/

注意:您仍然需要一个在启动时带有 --early-hints 标志的 Puma 版本(例如 v3.11.4)。