周末了,来点简单轻松的内容。
在日常的开发过程中,我经常会关注每个接口的响应速度,准确的说是服务器从接收到请求然后进行业务逻辑处理,最后完成响应这段过程的耗时时长。当然这个小功能中间件早就帮我们做好了,不过我们自己如何简单的去实现它呢?
计时嘛,很简单啊。请求进来之后标记一下时间点,等到完成之后在标记一下计算时间差就行了嘛。
是的,没错。那么我们如何区分每个不同的请求呢,自己维护一个队列记录吗?还有,请求和响应两步分别标记时间是否就意味着我们需要分别调用两次处理函数呢?
当然不是。每个请求都有一个自己对应的 request、response 对象,当请求进来时直接为 request 对象添加自定义的属性记录第一个时间点即可,同时直接监听 response 的 finish 事件。
示例:
是不是真的很简单,处理函数只在最开始调用一次,计算时间间隔调用 node 自带的 process.hrtime 函数即可。
最后再用 curl 模拟不同的请求测试下:
看到这里是不是有一种很熟悉的感觉。
监听请求的响应耗时有助于我们发现服务器接口的性能瓶颈,而我们若是进一步记录不同接口的访问频率则可能帮助我们发现业务上的优化改进点(比如用户多次调用了商品描述接口,但是却很少调用订单买入接口,则我们可能会思考是不是业务流程不够简洁、或者买入的点击按钮不够显眼等等)。
好吧,就写这么点内容了。