簡體   English   中英

Spring 服務器或 Nginx(反向代理)上的 Gzip?

[英]Gzip on Spring server or Nginx (reverse proxy)?

很直接的問題:

在 Spring 服務器和 nginx 上啟用 gzip 的優缺點是什么? Spring Server 僅用於服務 RESTful api 請求(json),Nginx 在 Spring Server 之前用作反向代理

我四處搜索,但似乎沒有人有一個很好的答案。 這個答案( 將 GZIP 壓縮與 Spring Boot/MVC/JavaConfig 與 RESTful 一起使用)談到應該在 nginx 上啟用它,因為它更有效(並且 IRL 人員這樣做)

因此,我想知道是否有人有這方面的經驗? 人們通常做什么?

如果您關心性能:不要為此使用 Nginx!

Nginx gzip 進程是一個內容過濾器,這與send_file優化不兼容(更多細節在https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/#enabling-sendfile ) :

啟用 sendfile 指令消除了將數據復制到緩沖區的步驟,並允許將數據從一個文件描述符直接復制到另一個文件描述符。

因此,我建議為此使用 HTTP 代理(您可以使用另一個 Nginx!我一直在做什么),並設置proxy_cache

Nginx -- (代理緩存) --> Nginx -- gzip --> CSS/JS 文件

大多數人會建議在nginx上啟用它。 我們的想法是讓Spring從盡可能多的工作中解放出來,因為:

  • Spring每個請求和連接使用的內存比nginx多得多。
  • Spring可能會在處理請求時保持數據庫連接。 數據庫服務器上的數據庫連接也很昂貴。
  • 如果負載需要, Springnginx更難擴展,而且成本更高。

對於大多數設置,差異很小且不明顯。 我從來沒有在實踐中測量過它。 其他人可能有更多經驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM