为什么 Chrome 需要 12 秒来执行更新图层树?
Why would Chrome take 12 seconds to do an Update Layer Tree?
我有一个相对不复杂的 ASP.Net 应用程序,它偶尔会在图层中显示一条带有阴影的警告消息,以及一个关闭通知的按钮。
这段代码多年来一直运行良好。
最近,我收到用户的投诉,说响应真的很慢。他们的体验是页面完全没有响应,当他们点击 [确定] 按钮时,很长一段时间都没有任何反应。
当我记录时间轴时,我可以看到导致网络服务器往返的原始事件,我可以看到来自网络服务器的响应。我还可以看到作为响应结果运行的所有 Javascript 代码。
对申请来说,交易结束了,对Javascript来说,交易也结束了。我们需要做的就是等待用户点击 [确定] 按钮,我们将关闭通知弹出窗口。
这就是 "freeze" 发生的地方。 [OK] 事件在大约 20-30 秒内未传送。与此同时发生了什么?这就是我写作的原因:
我们看到一些非常短的计时器每隔一段时间就会触发一次,然后我们看到一个快速的重新计算样式调用,然后是一个更新图层树事件。
更新图层树事件需要 10-12 秒!
这是由于更新图层树事件而无响应的对话框的代码首先显示如您在此处看到的那样,然后,如果出现问题,它可能会使用类似于 showAlert 的代码进行更新:
Status/error dialog code
请参阅@tiblu 的 了解有关 为什么 Chrome 会执行 Update Layer Tree
.
的详细信息
关于耗时 12 秒:交互在其他浏览器(例如 Firefox 或 Safari)中是否正常?如果您的代码如您所说多年来一直运行良好,并且浏览器响应问题最近突然出现(> 2015 年 10 月中旬)并且仅在 Chrome 中,问题 可能 不是你的代码。
最近有多个类似的新问题和投诉,指向Chrome46的发布。例如:this issue (code.google.com) and this issue (code.google.com).
CPU 峰值是浏览器无响应的原因,您可以使用 Chrome 的任务管理器进行监控。至于 为什么 CPU 是尖峰和进一步的细节,你需要关注上面的问题和其他问题。
对伪答案表示歉意,目前没有代表将其添加到评论中。
感谢所有回复的人...我无法弄清楚如何重新安装 Chrome 的旧版本,但我确实设法获得了 [=16] 的测试版=] 48 (48.0.2564.8),令我最惊喜的是,我无法再重现该问题。
为了确定,我从今天早上的 BACKUP 中恢复了 46,它再次出现了这个问题。重新安装beta-48后,问题消失了。
万岁!大家干得好!
我有一个相对不复杂的 ASP.Net 应用程序,它偶尔会在图层中显示一条带有阴影的警告消息,以及一个关闭通知的按钮。
这段代码多年来一直运行良好。
最近,我收到用户的投诉,说响应真的很慢。他们的体验是页面完全没有响应,当他们点击 [确定] 按钮时,很长一段时间都没有任何反应。
当我记录时间轴时,我可以看到导致网络服务器往返的原始事件,我可以看到来自网络服务器的响应。我还可以看到作为响应结果运行的所有 Javascript 代码。
对申请来说,交易结束了,对Javascript来说,交易也结束了。我们需要做的就是等待用户点击 [确定] 按钮,我们将关闭通知弹出窗口。
这就是 "freeze" 发生的地方。 [OK] 事件在大约 20-30 秒内未传送。与此同时发生了什么?这就是我写作的原因:
我们看到一些非常短的计时器每隔一段时间就会触发一次,然后我们看到一个快速的重新计算样式调用,然后是一个更新图层树事件。
更新图层树事件需要 10-12 秒!
这是由于更新图层树事件而无响应的对话框的代码首先显示如您在此处看到的那样,然后,如果出现问题,它可能会使用类似于 showAlert 的代码进行更新:
Status/error dialog code
请参阅@tiblu 的 Update Layer Tree
.
关于耗时 12 秒:交互在其他浏览器(例如 Firefox 或 Safari)中是否正常?如果您的代码如您所说多年来一直运行良好,并且浏览器响应问题最近突然出现(> 2015 年 10 月中旬)并且仅在 Chrome 中,问题 可能 不是你的代码。
最近有多个类似的新问题和投诉,指向Chrome46的发布。例如:this issue (code.google.com) and this issue (code.google.com).
CPU 峰值是浏览器无响应的原因,您可以使用 Chrome 的任务管理器进行监控。至于 为什么 CPU 是尖峰和进一步的细节,你需要关注上面的问题和其他问题。
对伪答案表示歉意,目前没有代表将其添加到评论中。
感谢所有回复的人...我无法弄清楚如何重新安装 Chrome 的旧版本,但我确实设法获得了 [=16] 的测试版=] 48 (48.0.2564.8),令我最惊喜的是,我无法再重现该问题。
为了确定,我从今天早上的 BACKUP 中恢复了 46,它再次出现了这个问题。重新安装beta-48后,问题消失了。
万岁!大家干得好!