ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 压缩 压缩可以大大减小响应主体的大小,从而提高 `Web` 应用程序的速度。 在大业务量的生产环境网站中,强烈推荐将压缩功能从应用服务器中卸载——典型做法是使用反向代理(例如 Nginx)。在这种情况下,你不应该使用压缩中间件。 ### 配合 Express 使用(默认) 使用[压缩中间件](https://github.com/expressjs/compression)启用 `gzip` 压缩。 首先,安装所需的包: ``` $ npm i --save compression ``` 安装完成后,将其应用为全局中间件。 ```typescript import * as compression from 'compression'; // somewhere in your initialization file app.use(compression()); ``` ### 配合 Fastify 使用 如果你在使用的是 `FastifyAdapter`,请考虑使用 [fastify-compress](https://github.com/fastify/fastify-compress)。 ``` $ npm i --save fastify-compress ``` 安装完成后,将其应用为全局中间件。 ```typescript import * as compression from 'fastify-compress'; // somewhere in your initialization file app.register(compression); ``` 默认地,如果浏览器支持编码,`fastify-compress`使用`Brotli`压缩(`Node>=11.7.0`)。`Brotli`在压缩比方面非常有效,但也非常慢。鉴于此,你可能想告诉`fastify-compress`仅使用`deflate`和`gzip`来压缩相应,你最终会得到一个较大的相应但是可以传输的更快。 要指定编码,向`app.register`提供第二个参数: ```typescript app.register(compression, { encodings: ['gzip', 'deflate'] }); ``` 上述内容告诉`fastify-compress`仅使用 gzip 和 deflate 编码,如果客户端同时支持两种,则以 gzip 优先。