对于 SPDY,我们需要实现一个 PushStrategy 并注册它来推送资源。
HTTP2 支持怎么样?
我喜欢 nginx 的想法,它包括读取 HTTP 响应中的链接头:https ://nghttp2.org/blog/2015/02/10/nghttp2-dot-org-enabled-http2-server-push/
谢谢!
对于 SPDY,我们需要实现一个 PushStrategy 并注册它来推送资源。
HTTP2 支持怎么样?
我喜欢 nginx 的想法,它包括读取 HTTP 响应中的链接头:https ://nghttp2.org/blog/2015/02/10/nghttp2-dot-org-enabled-http2-server-push/
谢谢!
Jetty HTTP/2 完全支持 HTTP/2 Push,实际上有不同的风格。Webtide 的网站已经启用了 Jetty 的 HTTP/2 Push。
有一个PushCacheFilter,它基于Referer
标头实现了在 Jetty SPDY 的 PushStrategy 中实现的相同算法。
有一个PushSessionCacheFilter,它使用构建器来实现更复杂的方法来实际推送资源。
目前两者都使用 Jetty 特定的 API,试图将它们作为 Servlet 4.0 规范的标准,并在现实世界的示例中对其进行测试。
这种方法的好处是完全自动化,并且不需要应用程序支持:开箱即用,适用于任何旧的/遗留的 web 应用程序。
Jetty 团队当然可以探索使用Link
标头的可能性,但这似乎需要应用程序的支持(应用程序必须添加Link
具有正确格式的标头),以及影响性能的代理层。这由https://bugs.eclipse.org/bugs/show_bug.cgi?id=463457跟踪,欢迎任何贡献。
为了实现自己的资源推送策略,您可以编写一个简单的 Servlet 过滤器,并在其中使用 Jetty 特定的 API(即Dispatcher.push(...)
或PushBuilder
API)来推送您自己的资源,类似于上面引用的过滤器所做的。