Java Spring服务器上的Gzip还是Nginx(反向代理)?

Java Spring服务器上的Gzip还是Nginx(反向代理)?,java,spring-boot,nginx,Java,Spring Boot,Nginx,非常直截了当的问题: 在Spring server v.s.nginx上启用gzip的优缺点是什么?Spring服务器仅用于服务RESTful api请求(json),而Nginx在Spring服务器之前用作反向代理 我四处寻找,但似乎没有人有一个很好的答案。这个答案()谈到应该在nginx上启用它,因为它更高效(IRL人员也这样做) 因此,我想知道是否有人有这方面的经验?人们通常做什么?大多数人会建议在nginx上启用它。我们的想法是让Spring从尽可能多的工作中解放出来,因为: Spri

非常直截了当的问题:

在Spring server v.s.nginx上启用gzip的优缺点是什么?Spring服务器仅用于服务RESTful api请求(json),而Nginx在Spring服务器之前用作反向代理

我四处寻找,但似乎没有人有一个很好的答案。这个答案()谈到应该在nginx上启用它,因为它更高效(IRL人员也这样做)


因此,我想知道是否有人有这方面的经验?人们通常做什么?

大多数人会建议在nginx上启用它。我们的想法是让Spring从尽可能多的工作中解放出来,因为:

  • Spring在每个请求和连接中使用的内存比nginx多得多
  • Spring在处理请求时可能会保留数据库连接。数据库服务器上的数据库连接也很昂贵
  • 如果负载需要,Spring比nginx更难扩展,成本也更高

对于大多数设置,差异很小且不明显。我从未在实践中测量过它。其他人可能有更多的经验。

大多数人会建议在nginx上启用它。我们的想法是让Spring从尽可能多的工作中解放出来,因为:

  • Spring在每个请求和连接中使用的内存比nginx多得多
  • Spring在处理请求时可能会保留数据库连接。数据库服务器上的数据库连接也很昂贵
  • 如果负载需要,Spring比nginx更难扩展,成本也更高

对于大多数设置,差异很小且不明显。我从未在实践中测量过它。其他人可能会有更多的经验。

如果你关心性能:不要为此使用Nginx

Nginx gzip进程是一个内容过滤器,它与
send_file
优化不兼容(更多详细信息,请访问):

启用sendfile指令消除了将数据复制到缓冲区的步骤,并允许将数据从一个文件描述符直接复制到另一个文件描述符

因此,我建议使用HTTP代理(您可以使用另一个Nginx!我一直在做的事情),并设置
proxy\u缓存


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

如果您关心性能,请不要使用Nginx

Nginx gzip进程是一个内容过滤器,它与
send_file
优化不兼容(更多详细信息,请访问):

启用sendfile指令消除了将数据复制到缓冲区的步骤,并允许将数据从一个文件描述符直接复制到另一个文件描述符

因此,我建议使用HTTP代理(您可以使用另一个Nginx!我一直在做的事情),并设置
proxy\u缓存

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