【问题标题】:Using gzip to compress rest response使用 gzip 压缩休息响应
【发布时间】:2015-04-08 18:55:33
【问题描述】:

我有一个向最终用户公开的休息服务。该服务发送响应(例如 500K)并且响应时间很长。

我们如何使用 Gzip 压缩响应并发送。

我正在使用 Spring boot 和 maven。

提前致谢。

【问题讨论】:

  • java 有 gzip 输入/输出流,你可以在服务器端使用
  • 你在使用 HTTPS 吗?
  • @NeilMcGuigan:目前是 Http,但将来会是 HTTPS
  • 响应正文中是否有敏感数据?
  • @NeilMcGuigan:是的,我们也有敏感数据。

标签: spring rest gzip spring-boot


【解决方案1】:

在 Spring Boot 1.3 版中更新了 GZIP 配置。现在,正确的处理方式是使用server.compression.enabled 属性。

server.compression.enabled=true

请参阅参考文档中的Enable HTTP response compression 章节,了解响应大小和内容类型等配置详细信息。请阅读Release Notes 了解此更改的动机。

【讨论】:

    【解决方案2】:

    Spring boot 允许您通过 application.properties/yaml 简单地配置 tomcat 以使用压缩

    server.tomcat.compression: on

    (更多选项见http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#how-to-enable-http-response-compression

    【讨论】:

    • 感谢您的回复。将尝试此选项并检查它是否有效
    • 谢谢卢卡斯。 Tomcat 提供压缩选项,默认禁用。当我们打开它时,响应会被压缩。
    【解决方案3】:

    看看你的容器。许多人会在服务器级别透明地为您执行此操作,您根本不需要对您的代码做任何事情。

    考虑一下Tomcat example

    【讨论】: