两者之间有什么区别
@(await Html.RenderComponentAsync<Todo>(RenderMode.ServerPrerendered))
和
@(await Html.RenderComponentAsync<Todo>(RenderMode.Server))
我正在研究文档,但找不到真正能解释差异的东西。而且也不太理解枚举中的代码注释:
// Summary:
// Renders a marker for a Blazor server-side application. This doesn't include any
// output from the component. When the user-agent starts, it uses this marker to
// bootstrap a blazor application.
Server = 2,
//
// Summary:
// Renders the component into static HTML and includes a marker for a Blazor server-side
// application. When the user-agent starts, it uses this marker to bootstrap a blazor
// application.
ServerPrerendered = 3
幕后发生了什么? 以及使用Server vs ServerPrerendered的方案是什么?
答案 0 :(得分:4)
完整说明,ASP.NET Core and Blazor updates in .NET Core 3.0 Preview 9:
- 静态静态使用指定的参数渲染组件。
- 服务器。渲染标记,Blazor Server应用程序应以交互方式呈现组件。
- ServerPrerendered 静态地预渲染组件以及一个标记,以指示该组件稍后应由Blazor Server应用程序以交互方式呈现。
此概念与性能有关。为页面提供服务的最快方法是静态呈现页面然后发送,而为页面提供服务的最慢方法是为“交互式Blazor”服务器页面提供服务(具有通过信号R Websocket同步的实时虚拟DOM)。
ServerPrerendered
是一个折衷方案:Blazor预渲染页面并将其作为静态页面发送,随后该页面成为交互式Blazor服务器应用程序。此行为旨在通过基于时间的定位将页面快速提供给搜索引擎。
答案 1 :(得分:4)
ServerPrerendered 的主要问题是它加载了两次,因此您的数据层代码也执行了两次。 服务器模式还可以,可能会慢一点。