我使用 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/