Моя Node.js azure функция возвращает огромные данные. Как сжать ответ json? - PullRequest
0 голосов
/ 09 марта 2020

У меня есть функция Node.js azure. Он возвращает большой JSON файл, который занимает около минуты, чтобы вернуться в пользовательский интерфейс. Как его сжать, чтобы улучшить производительность приложения?

1 Ответ

0 голосов
/ 13 марта 2020

Вы можете использовать базовый модуль zlib для сжатия данных перед их отправкой. Убедитесь, что для значения заголовка Content-Encoding установлено значение gzip, чтобы клиенты соответствующим образом распаковывали данные.

Что-то подобное должно делать

const { promisify } = require('util');
const zlib = require('zlib');

const gzip = promisify(zlib.gzip);

module.exports = async function (context, req) {
  context.log('JavaScript HTTP trigger function processed a request.');

  var res = {
    headers: {
      'Content-Encoding': 'gzip'
    }
  };

  if (req.query.name || (req.body && req.body.name)) {
    // res.status = 200; /* Defaults to 200 */
    res.body = await gzip("Hello " + (req.query.name || req.body.name));
  }
  else {
    res.status = 400;
    res.body = await gzip("Please pass a name on the query string or in the request body");
  }

  context.res = res;
}
...