什么是SSR

Blazor中的流式渲染结合了SSR(服务端渲染),服务端将HTML拼好返回给前端,有点像我们熟知的Razor Pages 或 MVC 。

当已经有了 Razor Pages 或 MVC 时,为什么还要选择使用 Blazor 来实现这一点?这里有几个原因。

首先,Razor Pages 和 MVC 没有像Blazor这样提供了很好的可重用组件。

其次,当选择 Razor Pages 或 MVC 时,我们将被固定在SSR渲染应用程序中。

如果您想添加任何客户端交互性,一种选择是JS另一种选择是Blazor。那么为什么不只使用 Blazor 来完成所有事情呢?

什么是流式渲染

用户常遇到长耗时的处理,比如查询数据库,通常的处理方式是等长耗时处理结束,再响应给浏览器,用户体验比较差。

而流式渲染将响应拆为多次。第一次响应很快返回客户端,并使用占位符内容快速渲染整个页面,同时执行比较耗时的异步操作。

耗时操作完成后,新的内容将使用与前一次响应相同的连接,发送到客户端,并更新到DOM中。

这样用户不需要等待耗时地操作,就可以看到一个包含占位符地页面,可以很好地改善用户体验。

体验Blazor流式渲染

Blazor中的流式渲染只需要在组件上添加指令@attribute [StreamRendering(true)]即可生成一个流式渲染组件。

我们可以根据VS中的Blazor Web APP模板创建一个Server渲染方式的项目

创建完后,其中的Weather组件,默认开启了流式渲染  @attribute [StreamRendering] 。我们可以将OnInitializedAsync中的delay事件改为5000,来更明显的体验。

@page "/weather"
@attribute [StreamRendering] <PageTitle>Weather</PageTitle> <h1>Weather</h1>
......
} @code { protected override async Task OnInitializedAsync()
{
// Simulate asynchronous loading to demonstrate streaming rendering
await Task.Delay(5000);
.......
} }

启动后可以看到weather请求,其实是一个get请求,这里体现了Blazor的Stream Rendering组件其实用了SSR方式。

5s后剩余的数据在同一个连接中返回

谁对多次响应进行了处理

其实是blazor.web.js拦截了多次响应,并将其渲染到对应位置。想要测试的话可以尝试删掉App.razor中的<script src="_framework/blazor.web.js"></script>。删掉后发现第二次响应已经渲染不了了。

.NET8 Blazor新特性 流式渲染的更多相关文章

  1. JDK8 新特性流式数据处理

    https://blog.csdn.net/canot/article/details/52957262

  2. Java8新特性--流(Stream)

    1.简介      Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性.在本文中我们一起来学习引入的一个新特性- ...

  3. Vue2.0流式渲染中文乱码问题

    在参照vue2.0中文官方文档学习服务端渲染之流式渲染时,因为响应头默认编码类型为GBK,而文件为UFT-8类型,所以出现了中文乱码问题. 解决办法:设置响应头编码类型即可 response.setH ...

  4. JDk8的新特性-流和内部iteration

    JDK8到今天已经出了好几年了  但是在公司能用到新特性的地方还是很少, 去年的时候当时项目老大要求我们用最新的写法来写Java 刚开始看到用stream写出来的代码一脸懵逼,内心就在想  这是Jav ...

  5. C#3.0新特性:隐式类型、扩展方法、自动实现属性,对象/集合初始值设定、匿名类型、Lambda,Linq,表达式树、可选参数与命名参数

    一.隐式类型var 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,编译器自动推断类型. 1.var类型的局部变量必须赋予初始值,包括匿名 ...

  6. 翻译-In-Stream Big Data Processing 流式大数据处理

    相当长一段时间以来,大数据社区已经普遍认识到了批量数据处理的不足.很多应用都对实时查询和流式处理产生了迫切需求.最近几年,在这个理念的推动下,催生出了一系列解决方案,Twitter Storm,Yah ...

  7. 【Spark】Spark2.x版的新特性

    一.API 1. 出现新的上下文接口:SparkSession,统一了SQLContext和HiveContext,并且为SparkSession开发了新的流式调用的configuration API ...

  8. Java8 新特性之流式数据处理

    一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现.比如我们希望对一个包含整数的 ...

  9. Java8 新特性之流式数据处理(转)

    转自:https://www.cnblogs.com/shenlanzhizun/p/6027042.html 一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作 ...

  10. java1.8新特性之stream流式算法

    在Java1.8之前还没有stream流式算法的时候,我们要是在一个放有多个User对象的list集合中,将每个User对象的主键ID取出,组合成一个新的集合,首先想到的肯定是遍历,如下: List& ...

随机推荐

  1. 自用gulp打包脚本,压缩html,压缩js,压缩css,压缩图片,功能齐全

    const gulp = require('gulp'); const fs = require('fs'); const htmlmin = require('gulp-htmlmin'); con ...

  2. [oracle]用户与权限管理

    创建用户 CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间 TEMPORARY TABLESPACE 临时表空间 QUOTA 空间配额大小 ...

  3. MindSponge分子动力学模拟——安装与使用(2023.08)

    技术背景 昇思MindSpore是由华为主导的一个,面向全场景构建最佳昇腾匹配.支持多处理器架构的开放AI框架.MindSpore不仅仅是软件层面的工具,更重要的是可以协同华为自研的昇腾Ascend平 ...

  4. 【io_uring】简介和使用

    文章目录 简介 使用 系统调用 liburing 样例 代码流程 编译 参考资料 简介 io_uring 是 Linux 在 5.1 版本引入的一套新的异步 IO 实现.相比 Linux 在 2.6 ...

  5. B3612 【深进1.例1】求区间和(前缀和)

    [深进1.例1]求区间和 [深进1.例1]求区间和 题目描述 给定 \(n\) 个正整数组成的数列 \(a_1, a_2, \cdots, a_n\) 和 \(m\) 个区间 \([l_i,r_i]\ ...

  6. CodeForces 1367E Necklace Assembly

    题意 给定一个字符串\(s\),长度为\(n\),一根项链为一个环,定义一根项链为\(k-beautiful\),则该项链顺时针转\(k\)下后与原项链相等,给出\(k\),请构造一根最长的\(k-b ...

  7. Codeforces 1257D - Yet Another Monster Killing Problem

    题意: 有\(n\)个怪物,每个怪物有攻击力\(a_i\)点:有\(m\)个英雄,每个英雄有攻击力\(p_i\)点,耐力\(s_{i}\)点. 怪物需要被依次杀死(按输入顺序). 每一天可以挑选一个英 ...

  8. 58同城二手车数据爬虫——数字加密解码(Python原创)

    一.基础首页爬取 def crawler(): # 设置cookie cookie = '''cisession=19dfd70a27ec0e t_f805f7762a9a237a0deac37015 ...

  9. 为什么大家都在用 WebP?

    WebP 是谷歌在 2010 年提出的一种新型的图片格式,放到现在来讲,已经不算是"新"技术了,毕竟已经有了更新的 JPEG XL 和 AVIF .但是在日常工作中,大家时常会碰到 ...

  10. 小知识:vi 查找如何不区分大小写

    在使用vi查找数据库的truncate记录日志时,发现对应语句夹杂了大小写,不够规范: 而vi默认查找是区分大小写的,如何不区分大小写查找指定内容呢? 有两种方式: (1)在查找指令后面额外加上\c标 ...