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