何时使用 Node.js 压缩文件

When to compress files with Node.js

我试图更好地理解 Node.js 中的静态文件服务过程。我认为除了文件压缩之外,我对所有事情都有很好的处理能力。许多参考资料似乎暗示您应该即时压缩文件。 Express 似乎在其 compression 中间件中使用了这种方法。

考虑到 memory / time 与压缩文件相关的问题以及要压缩的文件的静态性质,为什么要即时压缩这些文件而不是将它们作为构建步骤或类似步骤的一部分进行压缩?我错过了什么吗?

这里有几个原因:

  • 新文件已添加到库中。您可能不希望每次添加或更改新文件时都重新构建所有内容。
  • 所使用的编码算法实际用于压缩和加密,需要动态生成的密钥才能解码。
  • 自适应霍夫曼编码不会占用大量内存和处理能力。
  • 您可以将多个小文件打包在一起并一次发送,而不是来回进行 HTTP 请求。
  • 您可以自定义编码算法以支持大文件分块发送,这使得停止和恢复成为可能。
  • 根据应用程序的不同,有时将文件一直发送到内存中而不是每次都从存储介质中读取它是有意义的。

因此,在我自己进行了大量研究和试验之后,我的结论是,如果您直接从 Node.js 提供文件,就没有理由不提前压缩您的静态文件。

我最终通过 unix 的 gzip 命令将大型静态文件压缩为构建步骤的一部分。