【问题标题】:Blazor server performance issuesBlazor 服务器性能问题
【发布时间】:2021-04-23 12:27:27
【问题描述】:

它是一个包含大约 100 个 .razor 页面的 Blazor 服务器项目, 当其中一个页面发生更改时,重建页面、重新启动 IIS Express 并刷新页面大约需要 19 秒。太糟糕了,我只对html做了一点小改动,但是显示结果需要很长时间。 测试结果是这样的:

拥有 100 个剃须刀页面以及所有 css 和 js 引用
构建:10
刷新页面:19 秒(包括 10 秒的构建时间)

当我们删除 100 页中的 90 页时(剩下 10 页):
构建:3
刷新页面:12 秒(包括 3 秒构建)

当我们删除所有 css 和 js 引用时:
构建:3
刷新页面:6 秒(包括 3 秒构建)

一点都不好,因为项目在增长,最终我们将有大约 400 页!并且将添加额外的 css 和 js 引用。在这种情况下,开发的时间会长很多。

https://github.com/dotnet/aspnetcore/issues/29416

解决办法是什么?

我尝试发表我的研究结果,可能对其他人有用

解决方案 1: OnInitialized 调用两次,使用 OnAfterRender(bool first) {if(firs) {... }} 而不是 OnInitialized() 减少了时间。但不影响构建时间。

解决方案 2: Google Chrome 浏览器拥有最好的缓存机制来减少测试和开发的 UI 渲染时间。但不影响构建时间。

解决方案 3: 我在 PropertyGroup 标记内的项目中添加了禁用。它减少了构建时间。

【问题讨论】:

  • 只更改一个页面就应该重建所有页面,这听起来很奇怪。检查你的依赖关系?
  • 我认为 Blazor 在每次更改后都会重建整个项目,因为它会在 .dll 文件中生成所有内容
  • 是的,我做到了。如果我有一个 400 页的项目会怎样?
  • 页面加载时间与css文件的关系不大。

标签: performance blazor blazor-server-side


【解决方案1】:

我遇到了一些同样的问题,我做到了: 你能检查一下你的启动页面的管道吗,如果你使用一些自定义中间件,试着把它们放在app.UseStaticFiles(); 下,这样你就可以确定你安装的库不会被你的自定义中间件验证。

【讨论】:

  • 谢谢,但这并没有太大的区别,
  • 在微软页面中,他们说:“预呈现其内容的 Blazor 服务器应用程序调用 OnInitializedAsync 两次:一次是在组件最初作为页面的一部分静态呈现时。第二次是在浏览器建立连接时返回到服务器。要防止 OnInitializedAsync 中的开发人员代码运行两次,请参阅预渲染后的有状态重新连接部分。所以也许这个 id 是检查这个链接的好点:docs.microsoft.com/en-us/aspnet/core/blazor/components/…
  • 这个解决方案建议在 OnInitialized() 上使用 OnAfterRender(bool first) 代替,这是真的,它减少了一点时间。
猜你喜欢
  • 2021-06-19
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 2022-12-03
  • 2014-09-30
  • 2021-09-22
  • 2015-04-16
  • 2021-01-30
相关资源
最近更新 更多