首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Spring中的Gzip压缩,角Java应用程序

理解Spring中的Gzip压缩,角Java应用程序
EN

Stack Overflow用户
提问于 2015-11-14 14:55:47
回答 1查看 4.3K关注 0票数 0

我正在使用Spring (v1.2)和AngularJS应用程序。我试图在我们的应用程序中实现GZip压缩,以提高性能。

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

1.在tomcat (弹簧引导嵌入式)中启用压缩,如下所示。参考资料: Stackoverflow..。Using GZIP compression with Spring Boot/MVC/JavaConfig with RESTful和spring文档..。https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html#how-to-enable-http-response-compression

代码语言:javascript
复制
@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);
                        }
                    }
            );
        }
    };
}

现在,内容编码:gzip在响应头中缺少。因此,上面的代码对没有任何影响,到现在为止是。我的问题是..。1.如何在spring中设置“内容编码:gzip”?->我在spring控制器(如httpservletresponse.addHeader("content-encoding","gzip") )中尝试过

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

  1. 除了上面的内容之外,仍然有一些悬而未决的?->使用java.util.zip.GZIPOutputStream显式压缩响应,或者当我启用像httpProtocol.setCompression("on");这样的压缩时,需要通过春季引导来自动处理?->需要创建一个servlet过滤器吗?

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

在Spring上下文中,有人能列出所需的步骤和不需要的步骤吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-16 05:10:00

我没有在SpringBoot1.2中进行测试,但是在SpringBoot1.3中,为了启用REST响应的压缩,您需要在application.properties中启用压缩

代码语言:javascript
复制
server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,application/javascript,text/html,text/xml,text/plain

在此之后,所有可缓存的请求(不是POSTPUT等)都会被压缩,比server.compression.min-response-size大。

附注:

作为响应,Using GZIP compression with Spring Boot/MVC/JavaConfig with RESTful存在在SpringBoot1.2中启用压缩的配置:

代码语言:javascript
复制
server.tomcat.compression: on
server.tomcat.compressableMimeTypes=application/json,application/xml,text/html,text/xml,text/plain
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33709681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档