我想在控制台中看到响应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)
一点解释:
finish事件res,因为当req发出end事件时,res标题尚未设置.getHeader为get.顺便说一句,我的声誉是0,所以我不能发表评论@ abeja的回答:)