我需要node.js压缩模块吗?

at0kjp5o  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(114)

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上显示压缩前后大小相同。

我不知道我是否需要一个压缩模块或没有。


的数据

lxkprmvk

lxkprmvk1#

我运行了你的代码并测试了一些东西,这是我的发现。
1.使用压缩,您的响应是701字节。每个结果一次是179字节。这是由于浏览器缓存,在初始加载后,无论是否压缩,都会创建缓存,并且在一段时间内,只使用该缓存。
1.这就是它变得有趣的地方,没有压缩的响应大小是678字节,所以压缩实际上增加了更多的大小。这是由于压缩增加了额外的头。它需要额外的头来让浏览器知道这个数据被压缩了,浏览器需要将其删除。如果你查看两种情况下的响应头,对于启用压缩的情况,这是Vary的额外头:Accept-Encoding.我的猜测是,由于数据已经很小,压缩库决定不使用任何压缩算法,或者算法本身决定不改变任何东西,因为在某些情况下,额外的压缩开销是不值得的。
1.为了证实我的猜测,我运行了另一个测试,在那里我使用了text.repeat(100),这是我看到真实结果的地方。压缩数据大小是407字节,没有它是4.5 kbs,所以压缩工作,它产生了巨大的差异(大约小10倍)。同样在初始加载后,再次应用浏览器缓存,压缩和非压缩响应的大小都是180字节。
总之,应用压缩是非常有用和好的想法。响应数据大小较小时,效果可能不可见,但数据越大,差异越显著(这取决于很多东西,比如你使用的压缩算法和你拥有的数据类型,库实际上允许你配置一些东西)。同样在浏览器的情况下,在初始加载缓存后,无论是否压缩,大小都是相似的。

相关问题