Jetty HTTP2 服务器推送支持

Jetty HTTP2 server push support

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

HTTP2 支持怎么样?

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

谢谢!

Jetty HTTP/2 完全支持 HTTP/2 推送,事实上有不同的风格。 Webtide's website 已经启用 Jetty 的 HTTP/2 推送。

有一个 PushCacheFilter,它基于 Referer header.

实现了 Jetty SPDY 的 PushStrategy 中实现的相同算法。

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

两者现在都使用特定于 Jetty 的 API,试图将它们作为 Servlet 4.0 规范的标准,并在真实世界的示例中进行测试。

这种方法的好处是它是完全自动化的,它不需要应用程序支持:开箱即用任何 old/legacy 网络应用程序。

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

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