【问题标题】:HTTP/2 Support in Rack / RailsRack / Rails 中的 HTTP/2 支持
【发布时间】:2016-01-15 13:29:03
【问题描述】:

HTTP/2 由all major browsers 发布和支持。在Apachenginx 等主要Web 服务器中提供了一些实现。

但对于我们 Ruby 主义者来说,目前的选择似乎非常有限。曾几何时(2014 年 12 月),Aaron Patterson exploring ideas 在 Rack 2.0 中支持 HTTP/2,但这还没有实现。他还发布了一些关于PumaWEBrick 可能性的要点。这就是我设法找到的所有内容。

我的问题是,笼统地说:如果我有兴趣在 Rails 应用程序中使用 HTTP/2,存在哪些选项,它们包含 HTTP/2 的哪些特性,以及它们中的任何一个是否已准备好投入生产?

【问题讨论】:

    标签: ruby-on-rails rack http2


    【解决方案1】:

    截至 2018 年 4 月,Rails v5.2.0 现在包含 HTTP/2 Early Hints,用于在主请求(资产推送)之前发送资产:

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

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

    【讨论】:

      【解决方案2】:

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

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

      那太好了。

      【讨论】:

      • 感谢您的回答。我现在会接受它,但我很想听听其他选择——如果可能的话,包括(当然)可以在 Heroku 上工作的东西。如果没记错的话,可以在 Heroku 上运行 nginx,但这违背了我使用 Heroku 的目的,因为我突然不得不更多地担心配置和部署。
      • HTTP2 将带来一组需要评估和实施的新架构实践。比方说缓存:你会想停止做连接......
      • 使用 Cloudflare 会自动获得与上面提到的 nginx 基本相同的好处,并且可以坐在 Heroku 前面。它甚至支持服务器推送,虽然与 Rails 结合起来不是特别好。
      猜你喜欢
      • 2015-06-04
      • 2017-01-03
      • 2015-10-14
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      相关资源
      最近更新 更多