You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中如何为指定路径资源选择性开启/关闭gzip压缩

配置不生效的核心原因

你此前在application.properties中开启了Spring Boot内置的全局GZIP压缩,该压缩逻辑默认作用于所有请求,优先级高于你自定义的Filter,因此自定义路径规则不会生效。

具体解决方案

步骤1:关闭全局默认GZIP配置

修改application.properties,关闭内置全局压缩:

# 关闭Spring Boot自带的全局GZIP压缩
server.compression.enabled=false

其余server.compression开头的配置可以删除,后续会在自定义Filter中配置对应规则。

步骤2:完善自定义CompressingFilter注册逻辑

补充压缩规则的初始化参数,同时设置过滤器优先级保证规则生效:

import com.github.ziplet.filter.compression.CompressingFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.Ordered;

@Bean
public FilterRegistrationBean<CompressingFilter> compressingFilterRegistrationBean() {
    FilterRegistrationBean<CompressingFilter> registration = new FilterRegistrationBean<>();
    registration.setFilter(new CompressingFilter());
    // 配置需要开启GZIP的路径
    registration.addUrlPatterns("/stuff/*", "/example", "/something/*");
    registration.setName(CompressingFilter.class.getSimpleName());
    registration.setAsyncSupported(true);
    // 设置最高优先级,避免响应被其他过滤器提前处理导致压缩规则失效
    registration.setOrder(Ordered.HIGHEST_PRECEDENCE);

    // 配置压缩规则,和你之前的全局配置保持一致
    registration.addInitParameter("minCompressSize", "1024");
    registration.addInitParameter("includeContentTypes", "text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json");

    return registration;
}

步骤3:验证配置是否生效

发送携带Accept-Encoding: gzip头的请求测试不同路径:

  • 访问指定开启压缩的路径,响应头中存在Content-Encoding: gzip说明压缩生效
  • 访问其他路径,响应头中不存在Content-Encoding: gzip说明路径规则生效
异常排查

如果仍不符合预期,优先排查:

  • 服务前端是否有Nginx等反向代理开启了全局GZIP压缩,代理层的压缩会覆盖Spring Boot的配置逻辑
  • 项目中是否存在其他全局压缩过滤器的配置

内容的提问来源于stack exchange,提问作者Johan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:06:06