Blazor WASM ASP.NET Core托管的性能

3

在过去的几天里,我一直在尝试提高我的 Blazor WASM ASP.NET Core Hosted 应用程序的渲染速度。我查看了以下参考资料:

https://github.com/dotnet/runtime/issues/40386

Blazor WebAssembly反序列化比下载还慢?出了什么问题?

https://learn.microsoft.com/en-us/aspnet/core/blazor/webassembly-performance-best-practices?view=aspnetcore-5.0#optimize-rendering-speed

以下建议并未取得多少改进的成功,由于已经有一段时间了,我想看看是否有其他答案。基本上,每当切换到新页面时都会出现“延迟”。您单击链接,等待几秒钟,然后页面加载。奇怪的是,即使没有 API 调用,仍然会有延迟。最奇怪的部分是,当我确实进行 API 调用时,API 调用本身显示它们只需要不到半秒钟的时间,但实际呈现页面需要 3-4 秒钟。我一直在使用虚拟化,大多数页面都相当简单(卡片、网格等)...所以我很困惑,如果有什么问题,我可能做错了,以致性能如此缓慢。我对 Web Dev 总体上还很陌生,因此任何见解都将不胜感激。值得一提的是,下面是实际性能的图片,其中绝大部分是“脚本”。同样值得一提的是,我正在使用 Radzen 组件。理想情况下,您单击后页面立即加载,并且组件随着呈现而加载,但我不确定在 Blazor 中是否可能实现这一点。

Performance


这个问题很难回答。你的页面有多“重”? 你能估算一下控件的数量(包括隐藏选项卡中的控件等)吗?虚拟化应该可以解决很多问题,你确定它正常工作了吗? - H H
但是如果要在SO上提出这个问题,请创建一个[mre],以便其他人可以参与讨论。 - H H
1
嘿@James - 我实际上已经弄清楚了。在找到如何适当地使用渲染后,性能得到了大大的提高。例如,我让每个组件从组件初始化器继承一些共享属性。当您有多个组件加载时,它会对渲染速度造成很大的影响。在进行了一些其他优化之后,现在它非常快(令人震惊!)我非常满意Blazor(用户也是如此),强烈推荐。 - Dan
您介意在答案中添加一些您发现的魔法优化的简短注释吗? - zmerr
没问题,詹姆斯。基本上,我只是按照这个指南进行操作:https://docs.microsoft.com/zh-cn/aspnet/core/blazor/performance?view=aspnetcore-5.0其他一些小技巧包括使用Task.Delay(1)来解除UI线程的阻塞(https://dev59.com/h77pa4cB1Zd3GeqPy3OU)。 此外,我使用了Radzen的免费Blazor组件来构建大部分网站,它们运行得非常好(https://blazor.radzen.com/)。 该应用程序是一个中型保险公司的大型索赔处理系统,有大约两打页面和50多个组件。到目前为止,一切都很顺利。 - Dan
显示剩余4条评论
1个回答

1

我发现在RadzenGrid中设置AllowFiltering=true会使其变得更慢,所以我默认将AllowFiltering=false,但为用户显示了一个切换该属性的按钮。

此外,我发现将属性FilterPopupRenderMode=PopupRenderMode.OnDemand设置为OnDemand可以使其更快,至少对于分页模式是这样,我还没有测试虚拟化模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接