首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过Spring Boot/MVC/JavaConfig通过RESTful使用GZIP压缩

通过Spring Boot/MVC/JavaConfig通过RESTful使用GZIP压缩
EN

Stack Overflow用户
提问于 2014-01-28 23:49:09
回答 7查看 116.4K关注 0票数 108

对于一系列RESTful服务,我们使用Spring Boot/MVC和基于注释的java-config,并且我们希望在一些API响应上有选择地启用HTTP GZIP流压缩。

我知道我可以在我的控制器和byte[] @ResponseBody中手动完成这项工作,但是我们更喜欢依赖Spring MVC基础设施(过滤器等),让它自动执行JSON转换和压缩(即该方法返回一个POJO)。

如何在ResponseBody或嵌入式Tomcat实例中启用GZIP压缩,并且在某种程度上我们可以有选择地只压缩一些响应?

我们目前没有任何基于XML的配置。

EN

回答 7

Stack Overflow用户

发布于 2016-07-15 22:38:44

application.yml配置中的最新版本上:

代码语言:javascript
复制
---

spring:
  profiles: dev

server:
  compression:
    enabled: true
    mime-types: text/html,text/css,application/javascript,application/json

---
票数 14
EN

Stack Overflow用户

发布于 2014-04-17 19:02:02

这基本上与@andy-wilkinson提供的解决方案相同,但是在Spring Boot1.0中,customize(...)方法有一个ConfigurableEmbeddedServletContainer参数。

值得一提的是,默认情况下,Tomcat只压缩text/htmltext/xmltext/plain的内容类型。下面是一个支持application/json压缩的示例:

代码语言: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);
                        }
                    }
            );
        }
    };
}
票数 13
EN

Stack Overflow用户

发布于 2016-10-25 19:45:22

Spring Boot 1.4将此用于Javascript HTML Json所有压缩。

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

https://stackoverflow.com/questions/21410317

复制
相关文章

相似问题

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