В чем разница между RenderMode.Server и RenderMode.ServerPrerendered в Blazor?

Какая разница между

@(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 ответа

Решение

Объясняется в обновлениях ASP.NET Core и Blazor в.NET Core 3.0 Preview 9:

  • Статический Статический рендеринг компонента с указанными параметрами.
  • Сервер. Визуализируйте маркер, в котором компонент должен отображаться в интерактивном режиме приложением Blazor Server.
  • ServerPrerendered Выполните статическую предварительную визуализацию компонента вместе с маркером, чтобы указать, что компонент впоследствии должен быть отрисован в интерактивном режиме приложением Blazor Server.

Это понятие связано с производительностью. Самый быстрый способ обслуживания страницы - статическая визуализация страницы и последующая отправка, а самый медленный способ обслуживания страницы - обслуживание страницы сервера "интерактивного Blazor" (с живым виртуальным DOM, синхронизированным через веб-сокеты SignalR).

ServerPrerendered- это компромисс: Blazor предварительно обрабатывает страницу и отправляет ее как статическую страницу, а затем страница становится интерактивным серверным приложением Blazor. Это поведение предназначено для быстрого обслуживания страниц поисковыми системами с позиционированием на основе времени.

Основная проблема с ServerPrerendered заключается в том, что он загружается дважды, поэтому ваш код уровня данных также выполняется дважды. Режим сервера в порядке, может быть немного медленнее.

Другие вопросы по тегам