生產環境http請求使用gzip壓縮

生產環境上因爲帶寬是貴重的資源,尤其對於小商家來說,如果對於請求不進行壓縮,就是白白浪費帶寬,不僅浪費錢,還可能影響別的正常業務。所以上生產環境前要簡要是否開啓了gzipo壓縮。

假設接口沒有壓縮前,返回的包長是1454.在這裏插入圖片描述

判斷接口使用使用gzip壓縮,通常主流的壓縮是gzip

命令行方式, 使用萬能的curl命令

curl -I -H "Accept-Encoding: gzip,deflate" http://127.0.0.1/user/get-no-compress

返回如下:

HTTP/1.1 200
Server: nginx/1.17.3
Date: Thu, 21 May 2020 08:07:04 GMT
Content-Type: application/json;charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Content-Encoding: gzip

這裏字段Content-Encoding顯示gzip就表示已經使用壓縮。

也可以通過瀏覽器,觀察接口
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-v2gcwSey-1590051896616)(https://pic-1251286439.cos.ap-guangzhou.myqcloud.com/input/20200521161112.png)]

那麼如何是指壓縮,目前主流部署方式是nginx+spring服務,通過nginx提供反向代理以及waf功能,通過spring來實現業務代碼。

nginx跟spring都提供gzip的壓縮方法

nginx 配置打開 gzip

    # gzip壓縮功能設置
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_comp_level 2;
    gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  • gzip_comp_level #壓縮級別1-9 數字越大,壓縮比越大,耗時越高,建議使用2
  • gzip_min_length #內容超過多少就啓用壓縮
  • gzip_buffers #壓縮使用buffer,照着配就行了
  • gzip_types #返回類型支持壓縮列表,如果沒有使用的gzip就看下是否沒有添加進去。

spring 配置打開 gzip

server:
  compression:
    enabled: true
    mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
    min-response-size: 1024

這裏注意,如果spring跟nginx都配置了gzip相當於壓縮了兩次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章