对于 SPDY,我们需要实现一个 PushStrategy 并注册它来推送资源。
HTTP2 支持怎么样?
我喜欢 nginx 的想法,它包括读取 HTTP 响应中的链接头: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 ,它实现了在 Jetty SPDY 的 PushStrategy 中实现的相同算法,基于 Referer
标题。
有一个PushSessionCacheFilter ,它使用构建器来实现更复杂的方法来实际推送资源。
现在两者都使用 Jetty 特定的 API,试图将它们作为 Servlet 4.0 规范的标准提出,并在实际示例中对它们进行测试。
这种方法的好处是完全自动化,并且不需要应用程序支持:开箱即用,可与任何旧的/遗留的 web 应用程序配合使用。
Jetty 团队当然可以探索使用 Link
的可能性。 header ,但这似乎需要应用程序的支持(应用程序必须添加具有正确格式的 Link
header ),以及影响性能的代理层。
这是由 https://bugs.eclipse.org/bugs/show_bug.cgi?id=463457 跟踪的,欢迎任何贡献。
为了实现自己的资源推送策略,您可以编写一个简单的 Servlet Filter,并在其中使用 Jetty 特定的 API(即 Dispatcher.push(...)
或 PushBuilder
API)来推送您自己的资源,类似于上面的引用过滤器做。
关于Jetty HTTP2 服务器推送支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29342106/