我有一个Web 应用程序,它使用 Spring boot 并在后端angular嵌入服务器。tomcat我想让已建立的 http 连接保持更长时间,以提高后续 http 请求的响应时间。浏览器被告知通过添加类似的内容来http/1.1保持http连接处于活动状态。但是, HTTP/2 中禁止连接特定的标头字段,例如 Connection 和 Keep-Alive 。因此,Chrome 和 Firefox 在 HTTP/2 响应中忽略它们。对于 HTTP/2,应通过其他方式传送特定于连接的元数据。Connection: Keep-AliveKeep-Alive: timeout=5, max=1000response header
我在任何地方都找不到那些“其他手段”应该是什么。我也无法在任何地方找到如何配置嵌入式 Tomcat 9 服务器以将Keep-alive元数据添加到HTTP/2响应中。这就是 tomcat 现在的配置方式:
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> tomcatCustomizer() {
return (tomcat) -> tomcat.addConnectorCustomizers((connector) -> {
if (connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
AbstractHttp11Protocol<?> protocolHandler = (AbstractHttp11Protocol<?>) connector
.getProtocolHandler();
protocolHandler.setDisableUploadTimeout(false);
protocolHandler.setConnectionUploadTimeout(5000);
protocolHandler.setKeepAliveTimeout(4000);
protocolHandler.setMaxKeepAliveRequests(200);
protocolHandler.setUseKeepAliveResponseHeader(true);
}
});
}
Run Code Online (Sandbox Code Playgroud)
但如果我想使用,这些设置将不起作用HTTP/2 …