黑人生命也是命。
支持平等正义倡议.

response-time

NPM Version NPM Downloads Build Status Test Coverage

Node.js 服务器的响应时间。

此模块创建一个中间件,用于记录 HTTP 服务器中请求的响应时间。此处将“响应时间”定义为从请求进入此中间件到向客户端写出标头所经过的时间。

安装

这是一个 Node.js 模块,可通过 npm 注册表 获得。安装通过 npm install 命令 完成

$ npm install response-time

API

var responseTime = require('response-time')

responseTime([options])

创建一个中间件,将 X-Response-Time 标头添加到响应中。如果您不想使用此模块自动设置标头,请参阅有关 responseTime(fn) 的部分。

选项

responseTime 函数接受一个可选的 options 对象,该对象可能包含以下任意键

digits

输出中要包含的固定位数,该输出始终以毫秒为单位,默认为 3(例如:2.300ms)。

要设置的标头的名称,默认为 X-Response-Time

suffix

布尔值,表示是否应将测量单位后缀添加到输出中,默认为 true(例如:2.300ms2.300)。

responseTime(fn)

创建一个新的中间件,该中间件记录请求的响应时间,并将其提供给您自己的函数 fnfn 参数将被调用为 fn(req, res, time),其中 time 是以毫秒为单位的数字。

示例

express/connect

var express = require('express')
var responseTime = require('response-time')

var app = express()

app.use(responseTime())

app.get('/', function (req, res) {
  res.send('hello, world!')
})

vanilla http 服务器

var finalhandler = require('finalhandler')
var http = require('http')
var responseTime = require('response-time')

// create "middleware"
var _responseTime = responseTime()

http.createServer(function (req, res) {
  var done = finalhandler(req, res)
  _responseTime(req, res, function (err) {
    if (err) return done(err)

    // respond to request
    res.setHeader('content-type', 'text/plain')
    res.end('hello, world!')
  })
})

响应时间指标

var express = require('express')
var responseTime = require('response-time')
var StatsD = require('node-statsd')

var app = express()
var stats = new StatsD()

stats.socket.on('error', function (error) {
  console.error(error.stack)
})

app.use(responseTime(function (req, res, time) {
  var stat = (req.method + req.url).toLowerCase()
    .replace(/[:.]/g, '')
    .replace(/\//g, '_')
  stats.timing(stat, time)
}))

app.get('/', function (req, res) {
  res.send('hello, world!')
})

许可证

MIT