开发者

SpringBoot中开启GZIP压缩的方式

目录
  • 前言
  • 开启GZIP压缩方式
    • 第一种
    • 第二种
    • 第三种
  • 总结

    前言

    首先GZIP压缩有哪些好处了解一下先:

    • 1.减小响应体大小
    • 2.提升页面的加载速度
    • 3.节省带宽成本
    • 4.优化移动端的体验(主要是一般在移动端设备上,网络带宽通常是比较慢的,启用可以有效提编程客栈升速度)
    • 5.更有效的缓存利用
    • 6.改善seo搜索引擎优化

    开启GZIP压缩方式

    第一种

    server:
      compression:
        enabled: true
        min-response-size: 1024  # 只有响应体大于 1KB 时才压缩
        mime-types: # 下面的是响应体的格式是这些的时候会压缩
          - application/json
          - application/XML
          - text/html
          - text/plain
          - text/css
          - application/Javascript
    • 未开启GZIP的响应头

    SpringBoot中开启GZIP压缩的方式

    • 开启GZIP后的响应头

    SpringBoot中开启GZIP压缩的方式

    这里可能你目前响应体返回的内容短的时候你看不出来,但是一旦响应较长的内容,你就能看到响应时间和渲染时间明显的加速

    第二种

    如果你想进行更精细的控android制,可以通过编程的方式来启用和配置 GZIP 压缩。

    例如,使用 WebMvcConfigurer 来自定义压缩策略:

    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
    
        @Bean
        public ServletRegistrationBean<Filter> compressionFilter() {
            // 可以自定义压缩逻辑的 Filter(可选)
            Filter compressionFilter = new GzipFilter();
            ServletRegistrationBean<Filter> registrationBean = new ServletRegistrationBean<>(compressionFilter);
            registrationBean.addUrlPatterns("/api/*"); // 指定哪些 URL 需要压缩
            return registrationBean;
        }
    }

    第三种

    尽管 Spring Boot 可以在应用层进http://www.devze.com行 GZIP 压缩,通常在生产环境中使用 Nginx 或 Apache 等反向代理服务器进行 GZIP 压缩更为高效,因为反向代理通常比应用服务器更擅长处理静态内容的压缩。

    http {
        gzip on;
        gzip_types application/json application/xml text/html text/plain text/css application/javascript;
        gzip_min_length 1024;
    }

    总结

    • 默认情况下,Spring Boot 不启用 GZIP 压缩
    • 你可以通过在 application.propertiesapplication.yml 中配置来启用它。
    • 启用 GZIP 后,只有当响应体的大小大于指定的 min-response-size 时,才会进行压缩,默认值是 2048 字节(2 KB)。

    强调开启GZIP的好处有哪些?

    1.减小响应体大小

    • 压缩数据:GZIP 压缩能够显著减小响应体的大小,尤其是对于 JSON、HTML、CSS、JavaScript 等文本格式的数据。通常,文本数据能被压缩到原来的 20% 到 30% 左右,甚至更多,这有助于节省带宽。
    • 减少数据传输:压缩后的数据更小,意味着从服务器到客户端传输的数据量减少,这对于网络带宽有限的环境尤其重要。

    2. 提升页面加载速度

    • 更快的加载速度:响应体变小后,传输时间减少,客户端(如浏览器)能够更快地获取到数据,从而加快页面渲jMjZtj染或 API 请求的响应速度。
    • 改善用户体验:压缩后的响应能够减少页面加载时间,提升用户体验,尤其是在移动端或网络条件不佳的环境中。

    3. 节省带宽成本

    • 降低带宽消耗:对于需要处理大量请求的服务器,GZIP 压缩能够有效减少带宽消耗,从而减少服务器的带宽成本。
    • 适应大流量应用:在高并发的情况下,压缩能够缓解带宽压力,提高服务的可伸缩性。

    4. 优化移动端体验

    • 改善移动网络条件下的性能:在移动设备上,网络带宽通常较慢,启用 GZIP 压缩可以显著提升应用在 3G/4G 等不稳定网络环境下的响应速度。
    • 减少流量使用:移动设备的流量通常有限,压缩后的响应能够减少流量消耗,有利于用户节省流量。

    5. 更有效的缓存利用

    • 优化缓存策略:在某些场景下,压缩后的响应体能更好地适应 HTTP 缓存机制。尤其是通过缓存代理(如 CDN 或缓存服务器)时,压缩响应能帮助缓存内容更有效地传输并存储。
    • Vary 头部支持:如果使用 Vary 头部来处理不同的请求,例如,响应的内容可能会因客户端的 Accept-Encoding 请求头而有所不同。启用 GZIP 后,缓存代理可以更精确地缓存不同版本的响应。

    6. 减少服务器负担

    • 减轻应用服务器压力:虽然压缩会增加服务器端的 CPU 负担(因为需要对响应体进行压缩),但它能够通过减小传输数据量来减少带宽压力,特别是在高流量的场景下,服务器的网络带宽瓶颈可能比 CPU 成为瓶颈更早,从而间接优化了服务器性能。
    • 适用于大流量应用:对于高并发、大流量的应用,GZIP 压缩可以帮助有效降低带宽需求,从而提高整体服务的性能和稳定性。

    7. 改善 SEO 和 Google PageSpeed

    • 优化 SEO(搜索引擎优化):虽然 GZIP 压缩本身并不会直接影响 SEO,但压缩可以加速网页加载时间,搜索引擎(如 Google)通常会将加载速度作为排名的一项指标。因此,启用 GZIP 压缩可能间接地帮助提高网站的 SEO 排名。
    • 提升 Google PageSpeed:Google PageSpeed 工具通常建议开启压缩,以提高页面性能评分。启用 GZIP 压缩有助于提升 PageSpeed 评分,优化用户体验。

    8. 支持现代浏览器的自动解压缩

    • 浏览器支持:现代浏览器(如 Chrome、Firefox、Safari 等)都支持 GZIP 解压缩。客户端在收到压缩的响应后,浏览器会自动进行解压并呈现数据,不需要前端开发者额外处理。
    • 无需手动解压:对于客户端来说,GZIP 解压缩是自动的,不需要开发者介入,简化了开发工作。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜