blazor中的RenderMode.Server和RenderMode.ServerPrerendered有什么区别?

时间:2019-10-04 03:59:46

标签: .net asp.net-core blazor blazor-server-side

两者之间有什么区别

@(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的方案是什么?

2 个答案:

答案 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 的主要问题是它加载了两次,因此您的数据层代码也执行了两次。 服务器模式还可以,可能会慢一点。