Node.js 中间件启用gzip
启用文本压缩
基于文本的资源应该通过压缩(gzip、deflate或brotli)来提供,以最小化总网络字节。
lighthouse提示:
Enable text compression Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression] FCP LCP
解决方案:
在 Node.js 中使用 Express 框架,可以通过 compression
中间件来启用 Gzip 压缩,以减少传输的数据量,从而提高 Web 应用的性能。以下是具体步骤:
1. 安装 compression
中间件
首先,需要安装 compression
中间件:
npm
npm install compression --save
yarn
yarn add compression -D
2. 配置 Express 使用 compression
在你的 Express 应用中引入并使用 compression
中间件:
const express = require('express'); const compression = require('compression'); const app = express(); // 启用 Gzip 压缩 // 核心点就这一句话 app.use(compression()); app.get('/', (req, res) => { res.send('Hello, world!'); }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
3. 启用静态资源的 Gzip 压缩
如果你有静态资源文件(如 HTML、CSS、JS 文件等),也可以使用 compression
来对这些文件进行压缩。可以通过 Express 内置的 express.static
中间件来处理静态文件,并结合 compression
进行压缩。
const express = require('express'); const compression = require('compression'); const path = require('path'); const app = express(); // 启用 Gzip 压缩 app.use(compression()); // 提供静态文件服务 app.use(express.static(path.join(__dirname, 'public'))); app.get('/', (req, res) => { res.sendFile(path.join(__dirname, 'public', 'index.html')); }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
4. 测试 Gzip 压缩
要验证 Gzip 压缩是否启用,可以使用以下方法:
使用浏览器开发者工具
打开浏览器的开发者工具(通常按
F12
或Ctrl+Shift+I
)。切换到 "Network" 面板。
加载你的应用程序。
选择一个请求并查看 "Headers" 选项卡,检查 "Content-Encoding" 是否为
gzip
。
使用命令行工具
你也可以使用 curl
命令来测试 Gzip 压缩:
curl -H "Accept-Encoding: gzip" -I http://localhost:3000
如果启用了 Gzip 压缩,你应该在响应头中看到 Content-Encoding: gzip
。
总结
通过以上步骤,可以在 Node.js 中使用 Express 框架来启用 Gzip 压缩,从而提高 Web 应用的性能。关键步骤包括安装 compression
中间件、配置 Express 使用 compression
、并提供静态文件服务。通过浏览器开发者工具或命令行工具可以验证 Gzip 压缩是否启用。