Spring gzip 与 Tomcat gzip

Posted

技术标签:

【中文标题】Spring gzip 与 Tomcat gzip【英文标题】:Spring gzip vs Tomcat gzip 【发布时间】:2016-05-09 21:23:24 【问题描述】:

我想为我的 Web 应用程序启用 GZIP 压缩。我在互联网上搜索,发现了 2 个不同的选项:

在嵌入式容器中启用压缩,如 Spring 文档中所述(https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html - 最新部分) 使用GzipResourceResolver 解析器,如下所述:http://kielczewski.eu/2014/11/static-resources-in-spring41/

这两种选择对我来说都可以,但我想了解其中的区别以及哪种方法更好。请帮忙。

此外,如果我同时启用这两个选项会怎样? servlet 容器会尝试压缩已经压缩的文件吗?

附言在我看来,第二个选项会更快,因为不需要每次都压缩响应 - 压缩文件将在构建阶段准备好。

【问题讨论】:

【参考方案1】:

如果启用了两个压缩,则将在两个层上进行压缩。 根据 spring 文档,启用 spring gzip 压缩在服务器上存在开销。如果您将应用程序部署在像 tomcat 这样的容器中,也可以在那里启用压缩。但是在像 tomcat 这样的容器上启用压缩会更好,因为它适用于所有资源(Js、图像等),而在 spring 中启用 gzip 压缩可能会为部分资源提供服务。双重压缩 gzip 文件也会增加开销,并且不会实现任何显着的压缩。

【讨论】:

如果已经设置了 Content-Encoding 标头,则不会压缩两次。

以上是关于Spring gzip 与 Tomcat gzip的主要内容,如果未能解决你的问题,请参考以下文章

将 GZIP 压缩与 Spring Boot/MVC/JavaConfig 与 RESTful 结合使用

Tomcat7中开启gzip压缩功能的配置方法

tomcat打开gzip配置utf-8

tomcat打开gzip配置utf-8

gzip压缩

tomcat9 gzip