Gzip
透過在 Envoy 中啟用壓縮,您可以節省一些網路頻寬,但會增加處理器使用率。
Envoy 支援請求和回應的壓縮與解壓縮。
此沙盒提供透過 HTTP
提供的回應壓縮和請求解壓縮範例。雖然沒有示範 HTTPS
,但壓縮也可以用於此。
此沙盒涵蓋三種情境
來自上游伺服器的檔案壓縮
來自下游用戶端的檔案解壓縮
Envoy 本身統計資訊的壓縮
步驟 1:啟動所有容器
變更至 examples/gzip
目錄並啟動 docker 組合。
$ pwd
envoy/examples/gzip
$ docker compose pull
$ docker compose up --build -d
$ docker compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
gzip_envoy-stats_1 /docker-entrypoint.sh /usr ... Up 0.0.0.0:10000->10000/tcp,:::10000->10000/tcp, 0.0.0.0:9901->9901/tcp,:::9901->9901/tcp, 0.0.0.0:9902->9902/tcp,:::9902->9902/tcp
gzip_service_1 python3 /code/service.py Up (healthy)
步驟 2:測試 Envoy 對上游檔案的壓縮
此沙盒設定了兩個在連接埠 10000
上服務上游檔案的端點
/file.txt
/file.json
只有 /file.json
設定為壓縮。
使用 curl
檢查從請求 file.json
的回應是否包含 content-encoding: gzip
標頭。
您需要新增一個 accept-encoding: gzip
請求標頭。
$ curl -si -H "Accept-Encoding: gzip" localhost:10000/file.json | grep "content-encoding"
content-encoding: gzip
由於只有內容類型為 application/json
的檔案設定為 gzip 壓縮,因此請求 file.txt
的回應不應包含 content-encoding: gzip
標頭,且該檔案不會被壓縮。
$ curl -si -H "Accept-Encoding: gzip" localhost:10000/file.txt | grep "content-encoding"
步驟 3:測試 Envoy 對下游檔案的解壓縮
此沙盒設定了一個上傳下游檔案的端點
/upload
使用 curl
取得壓縮檔案 file.gz
$ curl -s -H "Accept-Encoding: gzip" -o file.gz localhost:10000/file.json
使用 curl
檢查上傳 file.gz
的回應是否包含 decompressed-size
標頭。
您需要新增 content-encoding: gzip
請求標頭。
$ curl -si -H "Content-Encoding: gzip" localhost:10000/upload --data-binary "@file.gz" | grep "decompressed-size"
decompressed-size: 10485760
步驟 4:測試 Envoy 統計資訊的壓縮
此沙盒設定了兩個連接埠,用於服務 Envoy 的管理員和統計資訊介面
9901
公開標準管理員介面9902
公開壓縮版本的管理員介面
使用 curl
對連接埠 9901
發出未壓縮統計資訊的請求,回應中不應包含 content-encoding
標頭
$ curl -si -H "Accept-Encoding: gzip" localhost:9901/stats/prometheus | grep "content-encoding"
現在,使用 curl
發出壓縮統計資訊的請求
$ curl -si -H "Accept-Encoding: gzip" localhost:9902/stats/prometheus | grep "content-encoding"
content-encoding: gzip
另請參閱
- Gzip 壓縮 API
Envoy gzip 壓縮的 API 和設定參考。
- Gzip 解壓縮 API
Envoy gzip 解壓縮的 API 和設定參考。
- 壓縮設定
Envoy 壓縮器過濾器的參考文件。
- 解壓縮設定
Envoy 解壓縮器過濾器的參考文件。
- Envoy 管理員快速入門指南
Envoy 管理員介面的快速入門指南。