您好,登录后才能下订单哦!
在系统维护开发中,遇见一个问题,就是某个功能处理很慢,慢到什么程度,批量审批十条工单信息,耗时大概是15+min,这个是绝对不能忍受的问题,看功能逻辑和代码逻辑,没有任何问题,可能代码处理不是很高效,但是也不能如此的缓慢。。。
在ie11中,f12查看,捕获网络,查看请求耗时,发现主要请求都在请求action上,ie11在f12状态,直接显示已挂起,之后进行百度解疑,才发现可能是请求方式的问题。
浏览器的确是发送了post请求,但是该请求“结果”栏显示的是“已终止”,“发起程序”值 是“已挂起”。请求头、请求体、响应头、响应体都是空的。也就说浏览器发送了1个异常的请求。
后台的action也收到了post的请求,但是没有获取到请求参数的值。
个人感觉,可能是页面请求在拼post的请求体时,会相对比较耗时,还没有执行完毕。此时页面关闭,JS终止了执行,浏览器发送了1个不完全的HTTP请求(没有附上请求体)。基于这个结论,我们将POST请求,改成Get请求,服务端能够收到请求的参数值了,时间也很快,十条单子批量审核,大概不到20s,这就算是正常反应了。
因为按钮触发的是js事件,在你点击按钮,触发js方法的时候,他去拼参数,如果是post请求,他js触发之后,需要把请求参数放在包体中,但是js请求之后,已经没有jsp容许你去放包体参数,所以参数可能丢失或者不全,这样action接收不到正常请求参数,前台挂起。修改为get请求之后,拼接的参数是放在url之后,这样action是肯定可以收到请求参数的,这样后台有响应,前台自然不会挂起。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。