美文网首页代码
通过express统计你的请求响应时间

通过express统计你的请求响应时间

作者: 忧郁的河蟹 | 来源:发表于2015-06-06 23:24 被阅读1658次

某天,河蟹君遇到一个需求,统计express服务器得api相应时间。基本思路是:当请求过来得时候,记录一下当前时间t1,然后api响应结束时间是t2, 响应时间 = t2 - t1

嗯,实现思路很清晰,另外,最好利用express的中间件机制来实现,这样才能够做到,足够的通用性,监听所有api的响应情况。

那么问题来了,需要知道中间件是从将请求处理,从一个中间件的数据流到另外一个中间件知道数据输出,我们虽然能够轻松地记录到t1,但是t2 却因为这种模型而变得获取困难,难道我们需要再每次响应的时候,特意记录一下t2,想想都觉得是一个非常庞大的工程。

如果你也遇到这种问题,河蟹君,确实有个办法解决

exports.responseTime = function () {
    return function (req, res, next) {
            req._startTime = new Date() // 获取时间 t1

        var calResponseTime = function () {
        var now = new Date(); //获取时间 t2
        var deltaTime = now - req._startTime;
                console.log(deltaTime);
        }

        res.once('finish', calResponseTime);
        res.once('close', calResponseTime);
        return next();
   }

}

使用中间件

app.use(responseTime())

express 里面拥有一个事件机制,通过监听 finishclose 事件,可以知道请求到底什么时候结束,监听这个事件,并在事件处理的过程当中,获取t2 ,计算出响应时间,这里值得注意的是,监听的方法是once,即监听一次后,并自动解除监听,如果用了on 方法,每次请求都会产生一次监听,请求多了,内存会泄漏,这里需要十分注意。

相关文章

  • 通过express统计你的请求响应时间

    某天,河蟹君遇到一个需求,统计express服务器得api相应时间。基本思路是:当请求过来得时候,记录一下当前时间...

  • 【翻译】Node.js 教程 —— express 路由参数

    我们已经设置好 express 应用并响应了 get 请求,但目前而言我们只是响应静态请求,假设我想响应动态请求,...

  • Node.js框架Express学习

    安装express 1.请求与响应 2.文件上传

  • Express和 Koa 的区别

    1. Koa 原理 封装请求和响应 通过U型模型/洋葱模型构造中间件 2. 跟Express的区别 2.1 编程模...

  • Express路由

    Express路由 一、Express路由简介 路由表示应用程序端点 (URI) 的定义以及响应客户端请求的方式。...

  • nodeJS搭建web服务器

    1.下载安装express框架 Express 框架核心特性: 可以设置中间件来响应 HTTP 请求。 定义了路由...

  • Flask学习笔记

    简单的Flask请求响应 装饰器指定路径,风格与express有异曲同工之妙。

  • 0322-express

    Express 框架核心特性: 可以设置中间件来响应 HTTP 请求。 定义了路由表用于执行不同的 HTTP 请求...

  • Nodejs(Express) - 02 路由

    路由定义了哪个url由哪个函数响应。url请求包含URI地址和请求方式(Get,Post等)Express有几种路...

  • Express 框架

    Express 框架核心特性:可以设置中间件来响应 HTTP 请求。定义了路由表用于执行不同的 HTTP 请求动作...

网友评论

本文标题:通过express统计你的请求响应时间

本文链接:https://www.haomeiwen.com/subject/gsodqttx.html