【发布时间】:2016-02-11 22:35:57
【问题描述】:
我有一个相对不复杂的 ASP.Net 应用程序,它偶尔会在层中显示一条带有阴影的警报消息,并带有一个按钮来关闭通知。
这段代码多年来一直运行良好。
最近,我收到了一些用户抱怨响应速度非常慢的投诉。他们的体验是页面完全没有响应,当他们点击 [OK] 按钮时,很长一段时间内什么都没有发生。
当我录制时间线时,我可以看到导致往返网络服务器的原件,并且我可以看到来自网络服务器的响应。我还可以看到响应结果运行的所有 Javascript 代码。
就应用程序而言,事务已结束,而就 Javascript 而言,事务也已结束。我们需要做的就是等待用户点击 [OK] 按钮,我们将关闭通知弹出窗口。
这就是“冻结”发生的地方。 [OK] 事件在 20-30 秒内未交付。在此期间发生了什么?这就是我写作的原因:
我们看到一些非常短的计时器每隔一段时间就会触发一次,然后我们看到一个快速的重新计算样式调用,然后是一个更新层树事件。
更新层树事件需要 10-12 秒!
这是由于更新层树事件而无响应的对话框的代码,如您在此处看到的那样首先显示,然后,如果出现问题,可能会使用类似于 showAlert 的代码进行更新:
【问题讨论】:
-
你可能需要发布一些代码来获得你需要的帮助
-
我明天会发布一些代码......但与此同时,谁能想到 Chrome 应该进入这种状态的任何可能原因? 12 秒做一个更新层树? ...正如您在情节中看到的那样,它会在几秒钟后再次执行!
-
TIblu ...我读过那篇文章,其中提到了许多对更新层树的调用...我的案例有一个对更新层树的调用,需要 10 秒。
标签: javascript google-chrome timeline