如何衡量Sails.js请求/响应时间

Jua*_*ano 7 node.js sails.js

我想在控制台中看到响应HTTP请求所需的时间.有点像express.js.

GET api/myurl/ 210ms 200

我跑,sails debug但这并没有显示多少.
我有节点检查器运行,但似乎这让我在运行时检查JavaScript对象,但不是这个特定的东西.
是否可以启用Sails中的配置或我可以安装的NPM模块,以便在请求和响应之间找到这个时间?

abe*_*eja 12

如果你想测量总响应时间(包括视图生成,推动数据接口),您可以使用req._startTime定义startRequestTimer中间件或使用响应时间中间件取得更精确的结果.

此中间件为所有HTTP响应添加了X-Response-Time标头,因此您可以在客户端和服务器端对其进行检查.

module.exports.http = {
  middleware: {
    order: [
      'responseTimeLogger',
      // ...
    ],

    // Using built-in variable defined by Sails
    responseTimeLogger: function (req, res, next) {
      req.on("end", function() {
        sails.log.info('response time: ' + new Date() - req._startTime + 'ms');
      });
      next();
    },

    // Using response-time middleware
    responseTimeLogger: function (req, res, next) {
      req.on("end", function() {
        sails.log.info('response time: ' + res.getHeader('X-Response-Time'));
      });
      require('response-time')()(req, res, next);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

@ abeja的答案很棒,但有点过时了.如果有人仍在寻求答案,我将最新版本放在下面:

// Using response-time middleware
responseTimeLogger: function(req, res, next) {
  res.on("finish", function() {
    sails.log.info("Requested :: ", req.method, req.url, res.get('X-Response-Time'));
  });
  require('response-time')()(req, res, next);
}
Run Code Online (Sandbox Code Playgroud)

一点解释:

  1. 监听对象finish事件res,因为当req发出end事件时,res标题尚未设置.
  2. 最近的Node.js将API更改getHeaderget.

顺便说一句,我的声誉是0,所以我不能发表评论@ abeja的回答:)