快速gzip静态内容

快速和连接似乎已经删除了他们的gzipfunction,因为他们太低效了。 目前有没有可靠的解决scheme来使用express-j?

Connect 2.0增加了对基于新的zlib东西的 compress()中间件的支持,它刚刚在Node Core API中出现。

你可以通过在你的package.json文件中添加一个依赖来连接2.0来在你的express服务器上使用它:

 { ... dependencies: { "connect" : "2.x", "express" : "2.x", // etc.. } } 

然后将以下逻辑应用到快速应用程序configuration中:

 // Create static file server with gzip support var app = express.createServer(express.logger()); app.use(connect.compress()); app.use(express.static(__dirname + '/public')); app.listen(80); 

请注意,这个东西还是很新的 ,虽然我可以在本地工作,但我的Heroku云应用程序在通过git进行部署时,在预提交钩子期间抱怨依赖于Compress 2.x:

 -----> Heroku receiving push -----> Node.js app detected -----> Resolving engine versions Using Node.js version: 0.4.7 Using npm version: 1.0.106 -----> Fetching Node.js binaries -----> Vendoring node into slug -----> Installing dependencies with npm npm ERR! Error: No compatible version found: connect@'>=2.0.0- <3.0.0-' 

正如你所看到的,他们仍然使用旧版本的节点(0.4.7)。


更新:

实际上,我可以通过在package.json添加相应的engines部分来获得Heroku的部署:

 { ... "engines": { "node": ">= 0.6.0 < 0.7.0" } } 

这些是使用http压缩testing的结果:

在这里输入图像说明

更新2014年6月

嗨,如果你正在阅读这个。 不要忘记,上面的东西只与Express 2.0有关。

Express 3.0和4.0使用不同的语法来启用http压缩,请参阅下面的gasolin文章。

Express 3.0现在有compress()支持:

 var app = express(); // gzip app.use(express.compress()); // static app.use("/public", express.static(__dirname + '/public')); // listen app.listen(80); 

Express 4.0 编辑 ,压缩成为独立的中间件。 所以你必须安装和导入才能使用它:

 var compress = require('compression'); app.use(compress()); 

我也search了npm,发现例如:

Gzippo最近已经开发(2天前),我认为这是一件好事。 我不能告诉你关于生产的用法。 你应该自己testing/基准testing。 我也可能会使用一个CDN的活网站或Nginx来承载我的静态文件,而不是一些nodejs模块。

Connect将在下一版本中支持Node中的新zlib内容

如果你search了npm,你可能会遇到节点压缩 。

将它作为中间件注入express并不难。