node.js - 使用 node.js 提供静态 gzip 文件

标签 node.js express nginx static

由于开销,我不想使用即时 gzip 的库。

该网站有一些在 node.js 中实现的动态组件。

我有一些静态 js 和 css 文件以及它们的 gzip 文件。我只想将 gzipped 版本提供给支持它的浏览器。

我考虑使用 express 中的静态中间件来提供静态文件,以及一些 URL 重写中间件来有条件地提供 gzip 压缩文件。但是,我找不到任何条件重写模块。

我不敢相信没有人做过这件事,或者它需要这么多的工作。我错过了什么?

另一方面,通过 node.js 提供静态文件是否过于昂贵?另一方面,使用 Apache 处理静态文件并在后面运行 node.js 似乎也很糟糕。 AWS EC2 托管最不愚蠢的配置是什么?

最佳答案

如果您想为您的客户提供最佳性能,只需使用 CDN。它将为您和许多其他东西处理 gzip 压缩。如果您需要帮助,可以使用 express-cdn模块。

如果您由于某些原因不喜欢 CDN,最好的选择是使用 nginx。我看到它在你的问题中被标记,但你没有提到任何关于它的东西。 nginx 比 node.js 快得多。对于 nginx,您可以查看它的 gzip-static module .

如果你还想使用node.js,那么connect-gzip-static是你最好的选择。它的工作原理与 nginx-gzip-static 模块几乎相同。如果请求文件有 .gz 文件对应,那么它将使用该文件,否则它将回退到正常的连接静态模块。

不要忘记事先编译文件,如果你使用 gulp,那么你也可以使用 gulp-gzip .如果不只是使用 gzip 命令。

还有gzippo ,它会即时压缩,但也会将结果缓存在内存中。所以它只会被压缩一次。

关于node.js - 使用 node.js 提供静态 gzip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23967270/

相关文章:

javascript - JavaScript 中的属性

javascript - 如何在一个 Promise 中进行多个查询

javascript - 如何等待 Promise.all 中的 2 个 Promise 完成然后执行另一项任务

node.js - 如何将 Node.js Express 应用程序部署在 HAProxy 后面?

ubuntu - 如何确定工作进程的数量

Nginx proxy_next_upstream 不起作用

javascript - 什么会阻止 sailsjs 识别 req.params ?

javascript - express.js 中的 session 未定义错误

javascript - 如何在 Node.JS 中接收 req.body.model 的整个对象而不是单独接收它的所有变量?

python - Django、Virtualenv、nginx + uwsgi导入模块wsgi报错