将 gzip 与多个连续的 nginx 代理结合使用

将 gzip 与多个连续的 nginx 代理结合使用

考虑网络上的以下服务器设置: 网络示例

在此示例中,两个代理服务器都是 Nginx 服务器。

如果目的是减少客户端的加载时间,Nginx 服务器(使用指令)是否应该在 A 点、B 点或两者处使用压缩gzip?有没有理论方法可以确定这一点,而无需进行简单的测试。

编辑:是否值得考虑,在网络内部有非常高的吞吐量,但在下一个工作(即连接 A)之外,快速吞吐量的保证较少。

答案1

假设您确实在谈论数据管道,如果您尽早进行 gzip 压缩,则路径的其余部分只会移动更紧凑的数据。

如果你在两个地方都使用 gzip 压缩,后面的点应该看到流量已经压缩,就不要再这样做了。

但是,如果在两个地方都启用了压缩,但它们使用的压缩方式不同,则后一点可能无法识别另一种算法,因此尝试使用新算法进行压缩。这通常会花费更多时间,因为压缩数据的可压缩性通常不如未压缩数据,而且额外的压缩几乎没有任何好处(并且可能会使情况变得更糟)。此外,许多客户端并不期望获得双重压缩的结果,可能只是撤消第二层压缩,而不是同时撤消两层压缩。

此外,如果您的前端服务器正在查看内容服务器提供的内容并对其进行调整,那么它将需要解压缩内容服务器发送的任何压缩内容。有针对此类用例的压缩算法,例如 LZO 压缩。我还没有真正研究过这些算法,因为我主要压缩静态数据和跨两个或多个时区移动的数据。

只是为了明确说明这个额外的情况:如果内容服务器提供的内容作为与前端提供的任何内容不同的文件传递给客户端,那么前端服务器可能并不关心这些数据是否已经压缩。另一方面,如果你在网页的开头添加一个开头,然后在其后添加网页的结尾,那么将开头和结尾之间的内容分开压缩是行不通的。我没有考虑过这种情况,因为我假设你问的是两种情况,你有可用的代码来处理,但由于你在自己的网站上而客户端不在,所以无法弄清楚如何进行基准测试。

相关内容