node.js + express + compression = непонятки
Коллеги, здравствуйте.
Я слегка новичек в мире 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 миллисекунд. Куда копать? Спасибо. |
Часовой пояс GMT +3, время: 21:38. |