Angular 2 应用程序仅在 Chrome DevTools 打开时反应非常缓慢

Angular 2 Application reacting very slowly only while Chrome DevTools is open

我的 Angular 2 应用程序对按键输入、按钮点击、跨输入的制表符等的响应速度很慢(1-5 秒)。只有 Chrome 开发人员工具已打开。 Material 2个动画也变得缓慢和断断续续。

我已经开发这个应用程序三个月了,并且每天都使用 Chrome DevTools。这个问题似乎是一夜之间出现的。

我知道的:

任何有关下一步去哪里的建议都将不胜感激!

我已经解决了这个问题,但我永远不知道是什么原因造成的。可能是我不小心更改了设置。

我删除了Chrome应用程序并重新安装,一切恢复正常。我将保留这个问题,以防其他人遇到这个问题或想做出贡献。

在打开 Chrome 开发工具的情况下,每个网络应用 运行 缓慢是正常的。

特别是如果您打开了检查选项卡,这就像同时打开了一个新页面 + 在任何块渲染上都有动画。

最终答案:

删除所有断点

即使他们没有被击中,这也为我修复了它并使性能恢复正常。

如果您有记录断点,问题可能会更大 - 因此,如果您附加到断点,请先尝试删除这些断点。


以前的回答:

我想出了一个解决方法 - 虽然仍然没有真正弄清楚到底出了什么问题。

我还发现了一堆我什至不知道的工具,我以前跳过了它们 - 它们在 More tools.

首先打开 Performance Monitor。这为您的 Chrome 选项卡显示了一个很好的 CPU 图表 - Windows 任务管理器一如既往地无用。

这是我从 mat-calendar 中选择日期时得到的行为。没有其他逻辑 运行 - 只是选择一个日期。我删除了 app-component 中的所有内容,只放了一个 mat-calendar,更改日期花了十秒钟!

其他控件一般都没问题。我可以打开对话框,使用组合框等,而且又好又快。但是选择日期给了我这个废话:

我尝试清空本地存储、清除缓存等,然后更改了我网站的端口号。我只是将 dev.example.com:44300 更改为 dev.example.com:44301 - 换句话说 Chrome 现在认为这是一个不同的网站。

这是我切换端口号后的样子。

我使用 reverse proxy server 也得到了同样的效果 - 它将我的本地机器连接到互联网 - 所以我可以尝试从其他机器复制这个问题。我不能。

所以希望对某人有所帮助 - 仍然不知道该服务器的缓存中有什么对性能有如此巨大的影响。但可以肯定的是,这不仅仅是我的代码。


这里有一些其他的尝试:

使用 --aot 标志进行测试

这对我没有影响,但有助于缩小范围。

添加一些什么都不做的控件(作为控件)

这样您就可以找到是否是某些特定的操作或控制导致了速度下降。您当然应该能够立即切换这些。

只需打开和关闭它们,隐藏一些东西。

<mat-radio-group>
    <mat-radio-button [value]="false">
        bloop
    </mat-radio-button> 
    <mat-radio-button [value]="false">
        bloop bloop
    </mat-radio-button> 
</mat-radio-group>

启用渲染调试选项

确保您没有不断地重新呈现整个页面

上面的呈现选项会在一定程度上显示这一点,但我喜欢做的一件事就是添加一个随机文本框 - 在其中键入内容,如果文本随后消失,您就知道该控件已被重新呈现。

 <!-- yes, just a standard text box -->
 <input type="text"/>      

用*ngIf="false"

隐藏东西

隐藏控件(您的和第三方的)并查看是否有任何问题。

对我来说,我目前怀疑 mat-calendar 导致了问题 - 但我仍然非常困惑为什么启用 'Record' 会使问题不存在。

我们今天在同事工作站遇到了这个问题。原来它是一个 chrome 扩展名(不记得了,名称中带有 "ghost" 的东西)。因此,也许尝试使用访客模式并检查问题是否仍然存在。如果没有,请依次重新激活扩展以查看是哪个扩展引起了问题。如果仍然出现,请遵循其他建议的方法。