Javascript 为什么Chrome需要12秒来更新图层树?

Javascript 为什么Chrome需要12秒来更新图层树?,javascript,google-chrome,timeline,Javascript,Google Chrome,Timeline,我有一个相对不复杂的ASP.Net应用程序,它偶尔会在层中显示一条警告消息,带有阴影,并带有一个按钮来消除通知 多年来,该代码一直运行良好 最近,我收到了用户的投诉,他们的反应非常慢。他们体验到的是页面完全没有响应,当他们点击[OK]按钮时,很长一段时间内什么都没有发生 当我记录一个时间轴时,我可以看到原始的时间轴,甚至可以看到导致Web服务器往返的时间轴,并且我可以看到Web服务器的响应。我还可以看到作为响应结果运行的所有Javascript代码 就应用程序而言,事务已经结束,就Javascr

我有一个相对不复杂的ASP.Net应用程序,它偶尔会在层中显示一条警告消息,带有阴影,并带有一个按钮来消除通知

多年来,该代码一直运行良好

最近,我收到了用户的投诉,他们的反应非常慢。他们体验到的是页面完全没有响应,当他们点击[OK]按钮时,很长一段时间内什么都没有发生

当我记录一个时间轴时,我可以看到原始的时间轴,甚至可以看到导致Web服务器往返的时间轴,并且我可以看到Web服务器的响应。我还可以看到作为响应结果运行的所有Javascript代码

就应用程序而言,事务已经结束,就Javascript而言,事务也已经结束。我们所需要做的就是等待用户单击[确定]按钮,然后我们将关闭通知弹出窗口

这就是“冻结”发生的地方。[OK]事件在大约20-30秒内没有传递。这段时间发生了什么事?这就是我写作的原因:

我们看到一些非常短的计时器每隔一段时间触发一次,然后我们看到一个快速重新计算样式调用,然后是一个更新层树事件

更新层树事件需要10-12秒

以下是对话框的代码,由于更新层树事件,该对话框将失去响应。当您在此处看到该对话框时,将首先显示该对话框,然后,如果出现问题,可能会使用类似于showAlert的代码对其进行更新:

有关Chrome为什么要执行更新图层树的详细信息,请参见@tiblu's

至于花12秒钟:在其他浏览器中,比如Firefox或Safari,交互是否正常?如果您的代码如您所说已经运行了多年,并且浏览器响应问题最近突然出现(>2015年10月中旬),并且仅在Chrome中,那么问题可能不是您的代码

最近有许多类似的新问题和投诉,都指向Chrome46的发布。例如:和

CPU峰值是导致浏览器无响应的原因,您可以使用Chrome的任务管理器对其进行监控。至于为什么CPU是尖峰和进一步的细节,你需要遵循上述问题和其他问题,因为他们的发展


为伪答案道歉,目前没有代表将此插入评论。

感谢所有回复者。。。我不知道如何重新安装旧版本的Chrome,但我成功地获得了Chrome48(48.0.2564.8)的测试版,令我最惊喜的是,我不再能够重现这个问题

可以肯定的是,我从今天早上的备份中恢复了46个,它重新显示了这个问题。重新安装beta-48后,问题就消失了


万岁!大家干得好

您可能需要发布一些代码以获得所需的帮助我明天将发布一些代码。。。但与此同时,有人能想到Chrome进入这种状态的可能原因吗?12秒来更新图层树。。。正如你在图中所看到的,几秒钟后它又会这样做!提布鲁。。。我读了那篇文章,其中提到了许多更新图层树的调用。。。我的案例有一个更新图层树的单一调用,需要10秒。这并没有提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦您有足够的评论,您就可以发表评论。-感谢markus,尤其是@YanFoto对我的情况进行了探索,并提供了获得代表性的技巧。如果需要,我可以得出这个答案,但如果可能的话,我更愿意将上述信息保留在上下文中并公开。这个问题在过去一个月左右就开始了,而且它只在Chrome中发生,而且每个人都在运行46版。非常有趣。@t如果您觉得我已经解决了您的问题,请接受我的回答,谢谢!