首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NodeJS/Express中的时间请求

NodeJS/Express中的时间请求
EN

Stack Overflow用户
提问于 2013-08-31 01:35:38
回答 6查看 38.5K关注 0票数 20

对进入我的节点应用程序的所有请求进行计时的最佳方法是什么?基本上,我希望在请求的最开始处获取当前时间戳,然后在请求的最后再次获取差异并记录下来。关于在NodeJS和Express中实现这一点的最佳方法的建议?

这是我的应用程序的一个样例(尽管比这个复杂得多)。

代码语言:javascript
复制
var express = require('express'),
    http = require('http'),
    app = express();

app.get('/', function (req, res, next) {
    res.send(200, 'hi');
});

app.get('/about', function(req, res, next) {
   res.send(200, 'something else');
});

var server = http.createServer(app);
server.listen(9000);
console.log("Express server listening...");

我想知道所有请求的时间。所以我想对//about以及我可能添加的任何其他端点进行计时。

EN

回答 6

Stack Overflow用户

发布于 2013-08-31 01:46:53

您可以使用内置的console.timeconsole.timeEnd函数来执行以下操作:

代码语言:javascript
复制
console.time('handler name');
... handle the request
console.timeEnd('handler name');

控制台输出:

代码语言:javascript
复制
handler name: 62ms
票数 6
EN

Stack Overflow用户

发布于 2018-02-19 19:25:15

您可以将模块morgan添加到您的中间件中,并像这样使用它-

代码语言:javascript
复制
const morgan = require('morgan')
...
...
const app = express()
app.use(morgan('dev'))

然后,日志将如下所示:

代码语言:javascript
复制
// :method :url :status :response-time ms - :res[content-length]
GET /myroute 200 339.051 ms - 242

检查morgan :)

票数 5
EN

Stack Overflow用户

发布于 2014-08-27 20:10:12

或者,如果你想要更高的时间分辨率,你可以使用process.hrtime(),或者使用我构建的一个模块,它使用了hrtime,但提供了很多额外的信息,比如平均时间、中位数、总时间等等。这个模块叫做exectimer。这是一个示例:

代码语言:javascript
复制
var t = require("exectimer");

app.use(function(req, res, next) {
  var tick = new t.Tick("responseTime");
  tick.start();
  res.on('header', function() {
    tick.stop();
  });
  next();
});

// when ready check the results with this:
var responseTime = t.timers.responseTime;
console.log(responseTime.min()); // minimal response time
console.log(responseTime.max()); // minimal response time
console.log(responseTime.mean()); // mean response time
console.log(responseTime.median()); // median response time

它非常准确,分辨率为纳秒,没有额外的依赖性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18538537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档