代码之家  ›  专栏  ›  技术社区  ›  Guillaume D.

Jetty HTTP2服务器推送支持

  •  4
  • Guillaume D.  · 技术社区  · 9 年前

    对于SPDY,我们需要实现PushStrategy并注册它以推送资源。

    HTTP2支持如何?

    我喜欢nginx的想法,它包括读取HTTP响应中的链接头: https://nghttp2.org/blog/2015/02/10/nghttp2-dot-org-enabled-http2-server-push/

    谢谢

    1 回复  |  直到 9 年前
        1
  •  3
  •   sbordet    9 年前

    Jetty HTTP/2提供了对HTTP/2 Push的完全支持,事实上有不同的风格。 Webtide's website 已经启用了Jetty的HTTP/2 Push。

    有一个 PushCacheFilter ,它实现了Jetty SPDY的PushStrategy中实现的相同算法,基于 Referer 标题。

    有一个 PushSessionCacheFilter ,它实现了一种更复杂的方法,使用构建器实际推送资源。

    目前,两者都使用了Jetty特定的API,试图将它们作为Servlet 4.0规范的标准,并在实际示例中进行测试。

    这种方法的优点是完全自动化,并且不需要应用程序支持:可以与任何旧的/遗留的Web应用程序一起使用。

    Jetty团队当然可以探索使用 Link 头,但这似乎需要应用程序的支持(应用程序必须添加 链接 具有正确格式的报头)和影响性能的代理层。 这是由跟踪的 https://bugs.eclipse.org/bugs/show_bug.cgi?id=463457 ,欢迎任何贡献。

    为了实现您自己的推送资源策略,您可以编写一个简单的Servlet过滤器,并在其中使用Jetty特定的API(即。 Dispatcher.push(...) PushBuilder API)来推送您自己的资源,类似于上面引用的过滤器所做的。