NodeJS,Express和JSON API响应时间

时间:2017-06-12 18:22:19

标签: node.js ubuntu express nginx

我已经创建了一个简单的表达式api来处理我的webapp上的JSON数据。

即使应用程序位于同一服务器上,响应时间始终在100ms范围内,实际数据提取时间不超过5ms;

以下是数据提取区域:

export function getData(params) {
  return new Promise((resolve, reject) => {
    if (!params.take || params.take > 30 && isBrowser) {
      params.take = 30;
    }
   console.time("API QUERY Execute");
       {Data Fetching Goes here}
    console.timeEnd("API QUERY Execute");
  });
}

该方法从console.time完成不到5毫秒。

这是快速路线配置

  app.route('/api/data').get((req, res) => {
    getData(req.query)
      .then((data) => {
        res.json(data);
      }).catch((err) => {
        res.status(400);
        res.send(err.message);
      });
  });

实际的Express App:

export default (parameters) => {
  const app = Express();
  const server = require('http').Server(app);
  let io;
  let redisCaching;
  if (process.env.ENABLE_API === 'true') {
    const Mongoose = require('mongoose');
    const Redis = require('socket.io-redis');
    Mongoose.connect(config.server.mongodb.url, config.server.mongodb.options);
    Mongoose.connection.on('connected', () => {
      console.log('==> Connected ', config.server.mongodb.url);
    });

    io = require('socket.io')(server);
    io.sockets.on('connection', (socket) => {
      console.log('==> Socket Connect', socket.handshake.headers.referer);
    });

    io.adapter(Redis({ host: 'localhost', port: 6379 }));

    redisCaching = require('../../redis/redisCaching').redisCaching;
    redisCaching.configure(6379, config.server.hostname);
  }

  if (process.env.CORS === 'true') {
    app.use((req, res, next) => {
      res.header('Access-Control-Allow-Origin', '*');
      res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
      next();
    });
  }

        app.route('/api/data').get((req, res) => {
        getArticles(req.query)
          .then((data) => {
            res.json(data);
          }).catch((err) => {
            res.status(400);
            res.send(err.message);
          });
      });


  app.listen(process.env.PORT, () => {
    console.log(`App listening on port ${process.env.PORT}`);
  });
};

使用pingdom等工具时,会显示100MS

0 个答案:

没有答案