首页 > 解决方案 > 我的 Node.js 天蓝色函数正在返回大量数据。如何压缩json响应?

问题描述

我有一个 Node.js 天蓝色函数。它返回一个大的 JSON 文件,需要将近一分钟才能返回 UI。如何压缩它以提高应用程序的性能?

标签: node.jsjsoncompressionazure-functions

解决方案


您应该能够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;
}

推荐阅读