Micronaut HTTP/2 支持
从 Micronaut 2.x 开始,Micronaut 基于 Netty 的 HTTP 服务器可以配置为支持 HTTP/2。
为 HTTP/2 配置服务器
第一步是在服务器配置中设置支持的 HTTP 版本:
启用 HTTP/2 支持
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
通过此配置,Micronaut 启用了对 h2c 协议的支持(请参阅 HTTP/2 over cleartext),这非常适合开发。
由于浏览器不支持 h2c 和一般的 HTTP/2 over TLS(h2 协议),建议在生产环境中启用 HTTPS 支持。对于开发,这可以通过以下方式完成:
启用 h2 协议支持
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
对于生产,请参阅文档的配置 HTTPS 部分。
请注意,如果您的部署环境使用 JDK 8,或者为了改进对 OpenSSL 的支持,请在 Netty Tomcat Native 上定义以下依赖项:
Gradle | Maven |
|
|
Gradle | Maven |
|
|
除了对适合您的体系结构的本机库的依赖。例如:
配置 Tomcat 本机
runtimeOnly "io.netty:netty-tcnative-boringssl-static:2.0.58.Final:${Os.isFamily(Os.FAMILY_MAC) ? (Os.isArch("aarch64") ? "osx-aarch_64" : "osx-x86_64") : 'linux-x86_64'}"
有关详细信息,请参阅有关 Tomcat Native 的文档。
HTTP/2 服务器推送支持
Micronaut 框架 3.2 中添加了对服务器推送的支持。服务器推送允许单个请求触发多个响应。这最常用于基于浏览器的资源。目标是改善客户端的延迟,因为他们不必再手动请求该资源,并且可以节省往返时间。
已创建一个新接口 PushCapableHttpRequest 来支持该功能。只需将 PushCapableHttpRequest 参数添加到控制器方法并使用其 API 来触发其他请求。
PushCapableHttpRequest 扩展了 HttpRequest,因此没有必要在控制器方法中将两者都作为参数。
在触发其他请求之前,应调用 isServerPushSupported() 方法以确保该功能可用。一旦知道支持该功能,请使用 serverPush(HttpRequest) 方法触发其他请求。例如:request.serverPush(HttpRequest.GET("/static/style.css")))。
更多建议: