当前位置: 首页 > 面试题库 >

通过RESTful与Spring Boot / MVC / JavaConfig一起使用GZIP压缩

亢奇
2023-03-14
问题内容

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

我知道我可以在控制器和a中手动完成此操作byte[] @ResponseBody,但是我们更希望依赖SpringMVC基础结构(过滤器/等),并使其自动进行JSON转换和压缩(即该方法返回POJO)。

如何在ResponseBody或嵌入式Tomcat实例中启用GZIP压缩,并且以某种方式我们可以选择性地仅压缩某些响应?

谢谢!

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


问题答案:

这些答案的其余部分已经过时和/或过于复杂,以至于应该是简单的IMO(gzip到现在已经存在多长时间了?比Java更长的时间…)。来自文档:

在application.properties 1.3+中

# 
server.compression.enabled=true
# opt in to content types
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css
# not worth the CPU cycles at some point, probably
server.compression.min-response-size=10240 

在application.properties 1.2.2-<1.3中

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

Older than 1.2.2:

@Component
public class TomcatCustomizer implements TomcatConnectorCustomizer {

  @Override
  public void customize(Connector connector) {
    connector.setProperty("compression", "on");
    // Add json and xml mime types, as they're not in the mimetype list by default
    connector.setProperty("compressableMimeType", "text/html,text/xml,text/plain,application/json,application/xml");
  }
}


 类似资料:
  • 我们将Spring Boot/MVC和基于注释的java-config用于一系列RESTful服务,并且我们希望有选择地在一些API响应上启用HTTP GZIP流压缩。 我知道我可以在我的控制器和中手动完成这一操作,但是我们更愿意依赖Spring MVC基础结构(过滤器/etc)并让它自动执行JSON转换和压缩(即方法返回POJO)。

  • 我想用Gzip压缩我的web应用程序,我使用下面的类 压缩滤波器 更新缓存过滤器工作正常,但仍然没有gzip压缩,下面是Chrome中的响应头。 我有什么办法能让这一切成功吗?我真的需要帮助,谢谢

  • 我试图启用gzip压缩的组件我的网站。我有ubuntu 11.04服务器和nginx 1.2。 在网站的nginx配置中,我有以下内容 Yslow和谷歌的速度测量建议我使用gzip来减少网络传输。现在,当我尝试时,我得到了 是否知道我做错了什么,或者我应该做什么来获得压缩内容?

  • 问题内容: 为什么在我的PHP演示中无法通过Go解压缩gzip数据,但是成功将PHP gzip数据解压到Go?我需要从Go to PHP API服务发布gzip JSON数据。 测试结果 PHP代码 结果是:PHP到PHP可以。转到PHP失败。 去代码 结果是:转到好的。PHP可以了。 问题答案: 它适用于以下更改: 在您的PHP代码中,您想使用而不是。如果您使用它,则不需要这些东西。我没有读过d

  • 问题内容: 我想使用Gzip压缩来压缩java中的输入流。 假设我们有一个未压缩的输入流(1GB数据..)。因此,我需要从源压缩的输入流: 问题答案: DeflaterInputStream不是您想要的,因为它缺少gzip标头/预告片,并且使用略有不同的压缩方式。 如果从OutputStream(推)更改为InputStream(拉),则需要做不同的事情。 GzipOutputStream的作用是

  • 使用的字符串: string='hello'+'\r\n'+'world' Java中的预期输出: out.getValue() f.write(Base64.b64Encode(Out.getValue())) F.Close() ByteArrayInputStream(压缩)); InputStreamReader(gis,“UTF-8”));