我有一个带有 React 前端的 Node 应用程序,作为 Azure 应用服务在 Node 14 上运行。
该应用程序由一个中间人 Node 服务器(在端口 3000 上,在 Express 上运行)和一个 React 前端组成,该服务器将所有 API 请求路由到另一个服务(在单独的 Azure 应用服务上运行的 .Net 应用程序)。用户与之交互(在端口 3001 上运行)。一切似乎都工作正常 - 本地开发环境和 Azure 服务都按其应有的方式处理 API 请求。
然而,仔细观察一下,本地开发环境(通常在 Mac 上运行)似乎正在压缩来自 API 的所有响应,而 Azure 服务则不然。这导致中间人服务器在 Azure 中运行时发送到前端 React 应用程序的数据大小比在本地运行时增加约 90%。例如,我们的一个 API 调用在本地运行时返回约 33kB 的响应,但相同的请求返回约 500kB 的响应。
我尝试指定 Accept-Encoding
和 Content-Type
header ,但这没有效果。
我最初的想法是,Azure 服务的配置与本地服务不同,并且 Azure 不支持 gzip 压缩,或者尚未明确启用 gzip 压缩。或者,Azure 实例可能会通过某种剥离内容编码 header 的网关?
有人知道我应该如何让 Azure 发送压缩响应吗?
最佳答案
事实证明,我错过了一个小(但至关重要)的步骤:在 Express 服务器上启用压缩。
安装并导入压缩
包,并将以下内容添加到我们的服务器代码中解决了该问题:
app.use(compression());
如果没有这个,本地运行的前端将提供压缩数据,而不是 Azure 部署的版本。
关于node.js - 为在 Azure 上运行的 Node 应用程序启用 gzip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69364689/