快速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,发现例如:
-
https://github.com/tomgallacher/gzippo
gzippo发音g-zippo是使用Compress进行连接的gzip中间件,以获得更好的性能。
Gzippo最近已经开发(2天前),我认为这是一件好事。 我不能告诉你关于生产的用法。 你应该自己testing/基准testing。 我也可能会使用一个CDN的活网站或Nginx来承载我的静态文件,而不是一些nodejs模块。
Connect将在下一版本中支持Node中的新zlib内容
如果你search了npm,你可能会遇到节点压缩 。
将它作为中间件注入express并不难。