Node Js Server带压缩
const express = require('express');
const compression = require('compression');
const app = express();
app.use(compression());
app.get("/compress", (req, res) => {
const text = `Lorem Ipsum is simply dummy text of the ...`;
res.json({text: text.repeat(10)});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
字符串
在google chome上显示压缩前后大小相同。
我不知道我是否需要一个压缩模块或没有。
的数据
1条答案
按热度按时间lxkprmvk1#
我运行了你的代码并测试了一些东西,这是我的发现。
1.使用压缩,您的响应是701字节。每个结果一次是179字节。这是由于浏览器缓存,在初始加载后,无论是否压缩,都会创建缓存,并且在一段时间内,只使用该缓存。
1.这就是它变得有趣的地方,没有压缩的响应大小是678字节,所以压缩实际上增加了更多的大小。这是由于压缩增加了额外的头。它需要额外的头来让浏览器知道这个数据被压缩了,浏览器需要将其删除。如果你查看两种情况下的响应头,对于启用压缩的情况,这是Vary的额外头:Accept-Encoding.我的猜测是,由于数据已经很小,压缩库决定不使用任何压缩算法,或者算法本身决定不改变任何东西,因为在某些情况下,额外的压缩开销是不值得的。
1.为了证实我的猜测,我运行了另一个测试,在那里我使用了text.repeat(100),这是我看到真实结果的地方。压缩数据大小是407字节,没有它是4.5 kbs,所以压缩工作,它产生了巨大的差异(大约小10倍)。同样在初始加载后,再次应用浏览器缓存,压缩和非压缩响应的大小都是180字节。
总之,应用压缩是非常有用和好的想法。响应数据大小较小时,效果可能不可见,但数据越大,差异越显著(这取决于很多东西,比如你使用的压缩算法和你拥有的数据类型,库实际上允许你配置一些东西)。同样在浏览器的情况下,在初始加载缓存后,无论是否压缩,大小都是相似的。