繁体   English   中英

在Spring Boot,Angular Java应用程序中了解Gzip压缩

[英]Understanding Gzip Compression in Spring Boot ,Angular Java Application

我正在使用Spring Boot(v 1.2)和AngularJS应用程序。 我正在尝试在我们的应用程序中实现GZip压缩以提高性能。

我想压缩我的JSON响应。 我已经做了...

1.按如下所示在tomcat(嵌入式Spring Boot)中启用压缩。 参考:Stackoverflow ... 将GZIP压缩与带有RESTful和spring docs的Spring Boot / MVC / JavaConfig一起使用 ... https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded- servlet-containers.html#how-to-enable-http-response-compression

@Bean
public EmbeddedServletContainerCustomizer servletContainerCustomizer() {
    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer servletContainer) {
            ((TomcatEmbeddedServletContainerFactory) servletContainer).addConnectorCustomizers(
                    new TomcatConnectorCustomizer() {
                        @Override
                        public void customize(Connector connector) {
                            AbstractHttp11Protocol httpProtocol = (AbstractHttp11Protocol) connector.getProtocolHandler();
                            httpProtocol.setCompression("on");
                            httpProtocol.setCompressionMinSize(256);
                            String mimeTypes = httpProtocol.getCompressableMimeTypes();
                            String mimeTypesWithJson = mimeTypes + "," + MediaType.APPLICATION_JSON_VALUE;
                            httpProtocol.setCompressableMimeTypes(mimeTypesWithJson);
                        }
                    }
            );
        }
    };
}

现在,我的响应标头中缺少content-encoding:gzip 因此,到目前为止,上述代码没有任何影响 我的问题是... 1.如何在春季设置“ content-encoding:gzip”? ->我在像httpservletresponse.addHeader("content-encoding","gzip")这样的spring控制器中尝试过

但是,这次, 响应体在浏览器中为空 (添加.. httpservletresponse.addHeader("content-encoding","gzip")

  1. 除上述以外, 还有什么未决 ->使用java.util.zip.GZIPOutputStream显式压缩响应,或者在启用诸如httpProtocol.setCompression("on");类的压缩时httpProtocol.setCompression("on"); 这是弹簧靴自动照顾的吗? ->是否需要创建servlet过滤器?

底线是 :我不清楚“普通servlet实现方式”和“ spring boot”实现方式之间。

在Spring Boot上下文中,任何人都可以列出所需的步骤和不需要的步骤吗?

我没有在Spring Boot 1.2中进行测试,但是在Spring Boot 1.3中要启用REST响应的压缩,您需要在application.properties启用压缩:

server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,application/javascript,text/html,text/xml,text/plain

之后,将压缩所有大于server.compression.min-response-size可缓存(不是POSTPUT等)请求。

聚苯乙烯

作为响应,在RESTful中将GZIP压缩与Spring Boot / MVC / JavaConfig一起使用时,存在用于在Spring Boot 1.2中启用压缩的配置:

server.tomcat.compression: on
server.tomcat.compressableMimeTypes=application/json,application/xml,text/html,text/xml,text/plain

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM