javascript - 在express js 4.4.1中压缩文件(gzip)

标签 javascript node.js express gzip

我使用 Express js 应用程序作为 Web 服务器,但所有静态内容均已解压缩(js 和 css 文件)。我尝试了几种解决方案,例如使用压缩 https://github.com/expressjs/compression但无法得到工作。 这是我的做法(仅与压缩使用相关的部分):

var app = module.exports = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(morgan('dev'));

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(methodOverride());
app.use(cookieParser());

var cacheTime = 86;     // 7 days
app.use(compression());
app.use(express.static(__dirname + '/public',{ maxAge: cacheTime }));

http.createServer(app).listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
});

最佳答案

Express 中间件始终按照声明的顺序进行处理。

你有这个:

app.use(express.static(...));
app.use(compression());

这意味着请求首先express.static()处理,当它可以处理这样的请求时,它会立即生成响应,并且该请求永远不会传递给压缩中间件。

如果交换中间件的顺序,如下所示:

app.use(compression());
app.use(express.static(...));

所有请求将首先通过压缩中间件,该中间件将进行设置,以便压缩响应。

关于javascript - 在express js 4.4.1中压缩文件(gzip),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37115234/

相关文章:

javascript - 如何绑定(bind)Jquery函数来点击?

javascript - flask wtf.quick_form 运行一些 javascript 并设置一个表单变量

node.js - TypeError : dest. 结束不是函数

node.js - 命令失败 : wmic process after updating npm in Express app

Azure:公共(public) PaaS 可以通过 Express Route 连接到专用网络吗?

javascript - 淡入淡出的滚动效果在 IE11 中不起作用

javascript - 使用 AJAX 和 JSON 从数据库中获取和显示数据时在 innerHTML 中未定义

node.js - 如何在 Redis 上命名空间键以避免名称冲突?

javascript - 具有动态键的 Node.js/Javascript 多维数组

javascript - Node.JS 使用 lodash 将子对象添加到对象