相关疑难解决方法(0)

使用HTTP/2协议时如何传递Keep-alive元数据?

我有一个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 …

tomcat keep-alive spring-boot http2

0
推荐指数
1
解决办法
3606
查看次数

标签 统计

http2 ×1

keep-alive ×1

spring-boot ×1

tomcat ×1