一尘不染

表达gzip静态内容

node.js

Express和connect似乎已删除其gzip功能,因为它们效率太低。目前,对于express-js的gzip是否有可靠的解决方案?


阅读 196

收藏
2020-07-07

共1个答案

一尘不染

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

通过在package.json文件中添加连接2.0的依赖关系,可以在快速服务器中使用此功能:

{
    ...
    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": {
        "node": ">= 0.6.0 < 0.7.0"
    }
}

这些是使用http压缩测试器时的结果:

在此处输入图片说明

2014年6月更新

iya,如果您现在正在阅读。不要忘记,上面的内容仅与Express 2.0相关。

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

2020-07-07