Express和connect似乎已删除其gzip功能,因为它们效率太低。目前,对于express-js的gzip是否有可靠的解决方案?
Connect 2.0添加了对基于新zlib东西的compress()中间件的支持,而这些东西刚刚出现在Node Core API中。
通过在package.json文件中添加连接2.0的依赖关系,可以在快速服务器中使用此功能:
package.json
{ ... dependencies: { "connect" : "2.x", "express" : "2.x", // etc.. } }
然后将以下逻辑应用于快速应用程序配置:
// 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)。
更新:
实际上,我可以通过在以下位置添加相应的engines部分来让Heroku进行部署package.json:
engines
{ ... "engines": { "node": ">= 0.6.0 < 0.7.0" } }
这些是使用http压缩测试器时的结果:
2014年6月更新
iya,如果您现在正在阅读。不要忘记,上面的内容仅与Express 2.0相关。
Express 3.0和4.0使用不同的语法来启用http压缩,请参阅下面的gasolin的文章。