最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot啟用GZIP壓縮的代碼工程

 更新時(shí)間:2024年08月27日 08:26:47   作者:HBLOG  
經(jīng)常我們都會(huì)與服務(wù)端進(jìn)行大數(shù)據(jù)量的文本傳輸,例如?JSON?就是常見(jiàn)的一種格式,通過(guò)?REST?API?接口進(jìn)行?GET?和?POST?請(qǐng)求,可能會(huì)有大量的文本格式數(shù)據(jù)提交、返回,壓縮和解壓在提升網(wǎng)絡(luò)帶寬的同時(shí),會(huì)帶來(lái)?CPU?資源的損耗,本文介紹了SpringBoot啟用GZIP壓縮的代碼工程

1.為什么是需要gzip壓縮?

經(jīng)常我們都會(huì)與服務(wù)端進(jìn)行大數(shù)據(jù)量的文本傳輸,例如 JSON 就是常見(jiàn)的一種格式。通過(guò) REST API 接口進(jìn)行 GET 和 POST 請(qǐng)求,可能會(huì)有大量的文本格式數(shù)據(jù)提交、返回。然后對(duì)于文本,它有很高的壓縮率,如果在 GET/POST 請(qǐng)求時(shí)候?qū)ξ谋具M(jìn)行壓縮會(huì)節(jié)省大量的網(wǎng)絡(luò)帶寬,減少網(wǎng)絡(luò)時(shí)延。 HTTP 協(xié)議在相應(yīng)部分支持 Content-Encoding: gzip ,瀏覽器請(qǐng)求時(shí)帶上 Accept-Encoding: gzip 即可,服務(wù)端對(duì)返回的 response body 進(jìn)行壓縮,并在 response 頭帶上 Content-Encoding: gzip,瀏覽器會(huì)自動(dòng)解析。 然而 HTTP 沒(méi)有壓縮 request body 的設(shè)計(jì),因?yàn)樵诳蛻?hù)端發(fā)起請(qǐng)求時(shí)并不知道服務(wù)器是否支持壓縮。因此沒(méi)法通過(guò) HTTP 協(xié)議來(lái)解決,只能在服務(wù)端做一些過(guò)濾器進(jìn)行判斷,人為約束。壓縮和解壓在提升網(wǎng)絡(luò)帶寬的同時(shí),會(huì)帶來(lái) CPU 資源的損耗。

2.代碼工程

實(shí)驗(yàn)?zāi)康?/h3>

對(duì)返回的json啟用gzip壓縮

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot-demo</artifactId>
        <groupId>com.et</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gzip</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.9.0</version>
        </dependency>

    </dependencies>
</project>

controller

請(qǐng)求和響應(yīng)都是同一個(gè)user對(duì)象,方便后面測(cè)試對(duì)比它們的大小

package com.et.gzip.controller;

import com.et.gzip.model.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@Slf4j
public class HelloWorldController {
  
    @PostMapping("/hello")
    public User showHelloWorld(@RequestBody User user){
        log.info("user:"+ user);

        return user;
    }
   
}

application.yaml

server:
  port: 8088
  compression:
    enabled: true
    mime-types: application/json,application/xml,text/html,text/plain,text/css,application/x-javascript

以上只是一些關(guān)鍵代碼,所有代碼請(qǐng)參見(jiàn)下面代碼倉(cāng)庫(kù)

代碼倉(cāng)庫(kù)

3.測(cè)試

  • 用postman請(qǐng)求http://127.0.0.1:8088/hello

可以看到 request body 285B,respnse body 64B ,將近5倍的差距。

以上就是SpringBoot啟用GZIP壓縮的代碼工程的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot啟用GZIP壓縮的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中BorderLayout布局管理器的兩種排列方式

    Java中BorderLayout布局管理器的兩種排列方式

    這篇文章主要介紹了Java中BorderLayout布局管理器的兩種排列方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java集合List相關(guān)面試題整理大全

    Java集合List相關(guān)面試題整理大全

    這篇文章主要給大家介紹了關(guān)于Java集合List相關(guān)面試題整理的相關(guān)資料,下面將提供一些常見(jiàn)的Java集合類(lèi)面試題及其解答,幫助讀者更好地準(zhǔn)備面試,需要的朋友可以參考下
    2024-01-01
  • Spring AOP方法內(nèi)部調(diào)用不生效的解決方案

    Spring AOP方法內(nèi)部調(diào)用不生效的解決方案

    最近有個(gè)需求,統(tǒng)計(jì)某個(gè)方法的調(diào)用次數(shù),開(kāi)始使用 Spring AOP 實(shí)現(xiàn),后來(lái)發(fā)現(xiàn)當(dāng)方法被內(nèi)部調(diào)用時(shí),切面邏輯將不會(huì)生效,所以本文就給大家介紹了Spring AOP方法內(nèi)部調(diào)用不生效的解決方案,需要的朋友可以參考下
    2025-01-01
  • Hadoop1.2中配置偽分布式的實(shí)例

    Hadoop1.2中配置偽分布式的實(shí)例

    這篇文章主要介紹了Hadoop1.2中配置偽分布式的實(shí)例,使用的系統(tǒng)是linux mint 15 64bit,hadoop使用的是1.2.1版本,需要的朋友可以參考下
    2014-04-04
  • java自加和自減運(yùn)算過(guò)程

    java自加和自減運(yùn)算過(guò)程

    這篇文章主要介紹了java自加和自減運(yùn)算過(guò)程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • javaweb圖書(shū)商城設(shè)計(jì)之購(gòu)物車(chē)模塊(3)

    javaweb圖書(shū)商城設(shè)計(jì)之購(gòu)物車(chē)模塊(3)

    這篇文章主要為大家詳細(xì)介紹了javaweb圖書(shū)商城設(shè)計(jì)之購(gòu)物車(chē)模塊的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • java弱口令檢測(cè)機(jī)制解析

    java弱口令檢測(cè)機(jī)制解析

    這篇文章主要介紹了java弱口令檢測(cè)機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java并發(fā)之原子性 有序性 可見(jiàn)性及Happen Before原則

    Java并發(fā)之原子性 有序性 可見(jiàn)性及Happen Before原則

    一提到happens-before原則,就讓人有點(diǎn)“丈二和尚摸不著頭腦”。這個(gè)涵蓋了整個(gè)JMM中可見(jiàn)性原則的規(guī)則,究竟如何理解,把我個(gè)人一些理解記錄下來(lái)。下面可以和小編一起學(xué)習(xí)Java 并發(fā)四個(gè)原則
    2021-09-09
  • Java簡(jiǎn)單實(shí)現(xiàn)對(duì)一串?dāng)?shù)字采用相應(yīng)的加密策略后傳輸

    Java簡(jiǎn)單實(shí)現(xiàn)對(duì)一串?dāng)?shù)字采用相應(yīng)的加密策略后傳輸

    下面小編就為大家?guī)?lái)一篇Java簡(jiǎn)單實(shí)現(xiàn)對(duì)一串?dāng)?shù)字采用相應(yīng)的加密策略后傳輸。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • SpringBoot中的掃描注解使用詳解

    SpringBoot中的掃描注解使用詳解

    為了使Spring Boot應(yīng)用程序能夠掃描并識(shí)別特定或自定義注解,通常的做法是在創(chuàng)建這些注解之后,在配置類(lèi)中通過(guò)@ComponentScan指定基礎(chǔ)包路徑,并設(shè)置過(guò)濾條件來(lái)包含所需的注解,本文給大家介紹了Spring Boot中的掃描注解如何使用,需要的朋友可以參考下
    2025-01-01

最新評(píng)論

栖霞市| 武宣县| 阳新县| 金堂县| 金坛市| 富顺县| 武定县| 禹城市| 嘉峪关市| 马尔康县| 宁国市| 通榆县| 阜康市| 嘉鱼县| 石楼县| 石渠县| 麻栗坡县| 哈尔滨市| 公主岭市| 乌拉特前旗| 宁强县| 平原县| 巴彦淖尔市| 安远县| 云阳县| 新津县| 团风县| 新竹市| 焉耆| 墨脱县| 延长县| 醴陵市| 新建县| 克东县| 应用必备| 仪征市| 九江县| 体育| 巴林右旗| 潮安县| 乐清市|