【问题标题】:Why would Chrome take 12 seconds to do an Update Layer Tree?为什么 Chrome 需要 12 秒来完成更新层树?
【发布时间】:2016-02-11 22:35:57
【问题描述】:

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

这段代码多年来一直运行良好。

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

当我录制时间线时,我可以看到导致往返网络服务器的原件,并且我可以看到来自网络服务器的响应。我还可以看到响应结果运行的所有 Javascript 代码。

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

这就是“冻结”发生的地方。 [OK] 事件在 20-30 秒内未交付。在此期间发生了什么?这就是我写作的原因:

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

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

这是由于更新层树事件而无响应的对话框的代码,如您在此处看到的那样首先显示,然后,如果出现问题,可能会使用类似于 showAlert 的代码进行更新:

Status/error dialog code

【问题讨论】:

  • 你可能需要发布一些代码来获得你需要的帮助
  • 我明天会发布一些代码......但与此同时,谁能想到 Chrome 应该进入这种状态的任何可能原因? 12 秒做一个更新层树? ...正如您在情节中看到的那样,它会在几秒钟后再次执行!
  • TIblu ...我读过那篇文章,其中提到了许多对更新层树的调用...我的案例有一个对更新层树的调用,需要 10 秒。

标签: javascript google-chrome timeline


【解决方案1】:

请参阅@tiblu 的comment,了解为什么Chrome 会执行Update Layer Tree 的详细信息。

至于 12 秒:交互在其他浏览器中是否正常运行,例如 Firefox 或 Safari?如果您的代码像您所说的那样多年来一直运行良好,并且最近出现了浏览器响应问题(> 2015 年 10 月中旬)并且仅在 Chrome 中问题可能不是您的代码。

最近有一些类似的新问题和投诉,指向Chrome 46的发布。例如:this issue (code.google.com)this issue (code.google.com)

CPU 峰值是导致浏览器无响应的原因,您可以使用 Chrome 的任务管理器对其进行监控。至于为什么 CPU 会出现峰值以及更多详细信息,您需要关注上述问题以及其他问题的发展。

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

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 - From Review
  • 感谢 markus 尤其是 @YanFoto 了解我的情况并提供获得代表的提示。如果需要,我可以提取这个答案,但如果可能的话,我更愿意将上述信息保留在上下文中并公开可用。
  • 这个问题确实是在过去一个月左右开始出现的,而且只发生在 Chrome 中,而且每个人都在运行 46 版。非常有趣。
  • @TLMAGE 如果您认为我已经解决了您的问题,请接受我的回答,谢谢!
【解决方案2】:

感谢所有回复的人......我无法弄清楚如何重新安装旧版本的 Chrome,但我确实设法获得了 Chrome 48 (48.0.2564.8) 的测试版,并且,令我最惊喜的是,我不再能够重现该问题。

为了确定,我从今天早上的 BACKUP 中恢复了 46,它重新显示了问题。重新安装 beta-48 后问题消失了。

万岁!大家干得好!

【讨论】:

    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2018-08-12
    • 2013-05-25
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多