我有一个相对不复杂的 ASP.Net 应用程序,它偶尔会在层中显示一条警报消息,带有阴影,并带有一个按钮来消除通知。
这段代码多年来一直运行良好。
最近,我收到用户抱怨响应速度非常慢。他们的体验是页面完全没有响应,并且当他们单击[确定]按钮时很长一段时间没有任何反应。
当我记录时间轴时,我可以看到原始事件,甚至导致到网络服务器的往返,并且我可以看到来自网络服务器的响应。我还可以看到作为响应结果运行的所有 Javascript 代码。
对于应用程序来说,事务已经结束,对于Javascript来说,事务也结束了。我们需要做的就是等待用户单击[确定]按钮,我们将关闭通知弹出窗口。
这就是“冻结”发生的地方。 [OK] 事件在 20-30 秒内未传递。在此期间发生了什么?这就是我写的原因:
我们看到一些非常短的计时器每隔一段时间就会触发一次,然后我们看到一个快速的重新计算样式调用,然后是更新图层树事件。
更新图层树事件需要 10-12 秒!
以下是由于更新图层树事件而变得无响应的对话框的代码,如您在此处看到的那样,它首先显示,然后,如果出现问题,可能会使用类似于 showAlert 的代码进行更新:
状态/错误对话框代码 https://i.stack.imgur.com/Cr6gm.png
请参阅@tiblu 的comment https://stackoverflow.com/questions/33640343/why-would-chrome-take-12-seconds-to-do-an-update-layer-tree/33763072?noredirect=1#comment55066911_33640343详细了解whyChrome 会执行Update Layer Tree
.
至于花费 12 秒:在其他浏览器(例如 Firefox 或 Safari)中交互是否正常?如果您的代码多年来一直工作正常,正如您所说,并且最近(> 2015 年 10 月中旬)突然出现浏览器响应问题,并且仅在 Chrome 中出现该问题may不是你的代码。
最近有很多类似的新问题和投诉,都指向 Chrome 46 的发布。例如:这个问题(code.google.com) https://code.google.com/p/chromium/issues/detail?id=545441 and .
CPU 峰值是导致浏览器无响应的原因,您可以使用 Chrome 的任务管理器进行监控。至于whyCPU 出现峰值,您需要进一步详细了解上述问题以及其他问题的发展情况。
对于伪答案表示歉意,目前没有代表将其放入评论中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)