Коллеги, здравствуйте.
Я слегка новичек в мире js, поэтому не обессутьте...
В общем, делаю бэкэнд на ноде (до этого этот же бэк был мною написан на Qt/C++, там все работало правильно), принципиально все хорошо, но бэк отдает иногда довольно большие (единицы мегабайт) json'ы, и хотелось бы применять компрессию.
Ок. Читаю, делаю так:
const compression = require('compression');
const express = require('express');
const db = require('./app/db/db');
const app = express();
const port = 8000;
db.connect(function (err) {
app.use(require('body-parser').urlencoded({extended: true}));
app.use(compression());
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
next();
});
console.log(err ? err.message : 'Connected to database');
require('./app/routes')(app, db);
app.listen(port, () => {
console.log('Server started at port ' + port);
});
});
Потом обрабатываю маршрут так:
app.get('/api/clients', (req, res) => {
db.clientList(function (err, rowCount, result) {
console.log(result);
//res.setHeader('Content-Length', result.length);
//res.setHeader('Content-Encoding', 'gzip');
res.send(err ? {'error': err} : result);
});
});
В общем, работет компрессия не всегда (причем хидера Content-Encoding нет никогда), примерно в половине случаем у меня время загрузки 5 секунд, в другой половине 50-10 миллисекунд.
Куда копать?
Спасибо.