需求同标题,项目中后端用的是 SpringMVC 。
关于 server 端处理的时间,初步想法是通过 Interceptor 来实现,即 preHandle 中记录开始时间, afterCompletion 中记录结束时间。虽然这样还不够精确,但应该能在一定程度上反映 server 端的性能。
关于 client 端就不太清楚了。。。因为对 JavaScript 还不太熟悉,各位工作中有遇到类似的问题么? Thanks !
1
xuzywozz 2016-10-25 14:58:24 +08:00
遇到了同样的问题...同求解答
|
2
hailinzeng 2016-10-25 15:16:56 +08:00
client 端的你可以看一下 58.com 的
Request URL:http://tracklog.58.com/referrer4.js?_=1477379501050 Request Method:GET Status Code:200 OK Remote Address:115.159.231.159:80 Cookie:id58=c5/ns1fjVM0Al14rAxHAAg==; als=0; bj58_id58s="TU43d3BhWDIrVk5rOTgzMw=="; bj58_new_uv=4; final_history=27415536300987%2C27636705321915%2C27273583419084%2C27359797444139%2C27427040382126; Hm_lvt_3bb04d7a4ca3846dcc66a99c3e861511=1474562018,1476890735; Hm_lvt_e15962162366a86a6229038443847be7=1474561996,1476890649; hots=%5B%7B%22d%22%3A0%2C%22s1%22%3A%22%E4%BF%9D%E9%95%96%22%2C%22s2%22%3A%22%E6%AD%A6%E6%A0%A1%22%2C%22n%22%3A%22sou%22%7D%5D; __utma=253535702.1323617980.1474561988.1474596957.1476890545.3; __utmz=253535702.1476890545.3.3.utmcsr=bj.58.com|utmccn=(referral)|utmcmd=referral|utmcct=/; city=bj; 58home=bj; 58tj_uuid=e0bdb92f-aeb8-44d5-9e5b-23c7872aac2a; new_session=1; new_uv=5; utm_source=; spm=; init_refer=; ipcity=bj%7C%u5317%u4EAC%7C0; myfeet_tooltip=end |
3
misaka19000 2016-10-25 15:19:10 +08:00
你是想要监控用户端的页面渲染的时间?
|
4
SakuraKuma 2016-10-25 17:17:02 +08:00 1
|
5
q397064399 2016-10-25 19:14:14 +08:00
http://jonwinters.pw
看我的小论坛,刚好有这个后端页面渲染计时的功能 我是用监听器实现的, J2EE 规范里面有 request listener 每个请求都会调用这个 listener 最后你在 JSP view 里面 加入当前时间 减去 request 请求的时间就好了 |
6
q397064399 2016-10-25 19:16:12 +08:00
拦截器我自己测试过了,有问题,写了个 URL 规则 次级目录的 URI 没法拦截,后来我改成 Listener 了 这个是我在
jsp servlet 里面看到的一个 J2EE 规范接口 |
7
q397064399 2016-10-25 19:17:34 +08:00
public class RequestListener implements ServletRequestListener {//记录每个页面请求的 Server 的时间
private Logger logger = LoggerFactory.getLogger(this.getClass()); public void requestDestroyed(ServletRequestEvent sre) { ServletRequest servletRequest = sre.getServletRequest(); HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest; logger.info( httpServletRequest.getRequestURI()); logger.info("Cost Time:"+(System.currentTimeMillis() - (Long)( httpServletRequest.getAttribute("startTime")))); } public void requestInitialized(ServletRequestEvent sre) { long startTime = (new Date()).getTime(); sre.getServletRequest().setAttribute("startTime",startTime); //logger.info("requestStartTime:"+startTime); } } |
8
byenow 2016-10-25 19:59:05 +08:00
4 楼正解
|
9
zeal7s OP @SakuraKuma 学习了,多谢!
|
10
zeal7s OP @q397064399 感谢给出的例子
|