Jetty HTTP2 服务器推送支持

标签 jetty server-push http2

对于 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/

相关文章:

node.js - http/2 推送的 javascript 未加载

rest - Camel - 使用 Java DSL 通过动态路由发出并行 GET 请求并聚合结果

java - Maven 不编译 webapp

HTML 5 Websockets 会取代 Comet 吗?

php - 如何使用flex 3和php获取 "long polling"?

asp.net-mvc - 使用 SignalR 将数据从 SQL Server 推送到 Web 应用程序

java - 通过 Jetty 9 Maven 插件中的 jetty.xml 设置队列限制

jetty - 将 Jetty 绑定(bind)到 IPv6 地址

javascript - 在使用 HTTP/2 时,缩小和连接 JS/CSS 文件以及对图像使用 sprite 是否仍然提供性能优势?

http2 - HTTP/2 数据压缩