Node.js 如何访问Express 4+中每条路线上的所有响应时间?

Node.js 如何访问Express 4+中每条路线上的所有响应时间?,node.js,performance,express,Node.js,Performance,Express,我正在努力将应用程序级别的响应时间数据传递到我的Express应用程序中的每条路线。我在谷歌上搜索了又搜索,但所有的结果都表明有人在API调用中抛出了一个新的日期,这很糟糕,或者Express包包含了从这里开始的许多结果。虽然我确信它很棒,但我不明白它除了添加一个标题之外还有什么用途,因为我可以在浏览器的开发工具中获得响应时间 我要做的是在每个路由上将所有响应时间数据从服务器访问到视图中 Express已经提供了一些请求数据,但不是全部。我似乎无法访问所有的响应。当我加载一个基本页面时,我的终端

我正在努力将应用程序级别的响应时间数据传递到我的Express应用程序中的每条路线。我在谷歌上搜索了又搜索,但所有的结果都表明有人在API调用中抛出了一个新的日期,这很糟糕,或者Express包包含了从这里开始的许多结果。虽然我确信它很棒,但我不明白它除了添加一个标题之外还有什么用途,因为我可以在浏览器的开发工具中获得响应时间

我要做的是在每个路由上将所有响应时间数据从服务器访问到视图中

Express已经提供了一些请求数据,但不是全部。我似乎无法访问所有的响应。当我加载一个基本页面时,我的终端是这样的,尽管除了一个CSS文件外,页面上还有6个图像

GET/200 64.439毫秒-1663 GET/styles/index.css 200 36.582 ms-2035

如果我使用响应时间包,我似乎无法访问“X响应时间”标题。req.headers似乎只返回所有报头的子集,类似于上面提到的Express traffic输出

也许我只是太笨了,但即使是响应时间包的文档也提到了如何添加,但我仍然不明白它应该添加什么,或者如何在控制台之外访问它

创建一个记录请求响应时间的新中间件,并使其可用于您自己的函数fn。fn参数将作为fnreq、res、time调用,其中time是以毫秒为单位的数字


你就不能这样做吗:

var responseTime = require('response-time')
app.use(responseTime(function(req, res, time) {
    res.header('X-Response-Time', time);
}));
现在,下面的每个路由上都会有一个响应时间头。

响应时间包将在发送请求的同时添加X响应时间头:

app.use(responseTime());
app.get('/', function(req, res) {
console.log(res.get('X-Response-Time')); // undefined
    res.send('Hello');
    console.log(res.get('X-Response-Time')); // 3.720ms
});
它通过监听何时将要写入头(例如,当将要发送请求时),在npm上使用on headers包之前追加响应时间来实现这一点

听起来您想要做的是记录响应时间,然后将其设置为res.locals,以便在视图中渲染


我尝试使用on headers包在res.locals中设置响应时间已经有一段时间了,但是我认为现在写响应已经太晚了。。。也许这条路是对的?很抱歉,我现在没有更多的时间来讨论:

我很乐意详细介绍这个答案。。。也许我误解了这个问题?重读一遍。我对设置标题没有问题。这正是响应时间模块所做的。我想获取数据并将其注入到视图中。而且,这不起作用。它总是返回未定义的。因为您有头,所以您可以将响应时间注入客户端的视图中。这是一个可以接受的选择吗?您是否在客户端使用任何特定的框架?有棱角、脊梁骨等?