server-timing
This module adds Server-Timing to response headers.
Example is here and open chrome devtool network tab.
You can use this as a express module / basic http function.
Install
$ npm install server-timing -S
Usage
const express = require('express');
const serverTiming = require('server-timing');
const app = express();
app.use(serverTiming());
app.use((req, res, next) => {
res.startTime('file', 'File IO metric');
setTimeout(() => {
res.endTime('file');
}, 100);
next();
});
app.use((req, res, next) => {
res.startTime('test', 'forget to call endTime');
next();
});
app.use((req, res, next) => {
res.setMetric('db', 100.0, 'Database metric');
res.setMetric('api', 200.0, 'HTTP/API metric');
res.setMetric('cache', 300.0, 'cache metric');
next();
});
app.use((req, res, next) => {
res.send('hello');
});
Conditionally enabled
const express = require('express');
const serverTiming = require('server-timing');
const app = express();
app.use(serverTiming({
enabled: (req, res) => req.query.debug === 'true'
}));
API
constructor(options)
- options.name: string, default
total
, name for the timing item - options.description: string, default
Total Response Time
, explanation for the timing item - options.total: boolean, default
true
, add total response time - options.enabled: boolean | function, default
true
, enable server timing header. If a function is passed, it will be called with two arguments, request
and response
, and should return a boolean. - options.autoEnd: boolean, default
true
automatically endTime is called if timer is not finished. - options.precision: number, default
+Infinity
, number of decimals to use for timings.
Result