如何使用流式渲染技术提升用户体验

ops/2025/1/1 6:36:59/

提示:记录工作中遇到的需求及解决办法

文章目录

  • 什么是流式渲染?
  • Node.js 实现简单流式渲染
  • 声明式 Shadow DOM,不依赖 javascript 实现
  • react 实现流式渲染
  • 总结


提示:以下是本篇文章正文内容,下面案例可供参考

什么是流式渲染?

流式渲染主要思想是将HTML文档分块(chunk)并逐块发送到客户端,而不是等待整个页面完全生成后再发送。

流式渲染不是什么新鲜的技术。早在90年代,网页浏览器就已经开始使用这种方式来处理HTML文档。

在 SPA (单页应用)流行的时代,由于 SPA 的核心是客户端动态地渲染内容,流式渲染没有得到太多关注。如今,随着服务端渲染相关技术的成熟,流式渲染成为可以显著提升首屏加载性能的利器。

素材来源于文章

Node.js 实现简单流式渲染

HTTP is a first-class citizen in Node.js, designed with streaming and low latency in mind. This makes Node.js well suited for the foundation of a web library or framework.


HTTP 是 Node.js 中的一等公民,其设计时考虑到了流式传输和低延迟。这使得 Node.js 非常适合作为 Web 库或框架的基础。


———— Node.js官网

Node.js 在设计之初就考虑到了流式传输数据,考虑如下代码:

const Koa = require('koa');
const app = new Koa();// 假设数据需要 5 秒的时间来获取
renderAsyncString = async () => {return new Promise((resolve, reject) => {setTimeout(() => {resolve('<h1>Hello World</h1>');}, 5000);})
}app.use(async (ctx, next) => {ctx.type = 'html';ctx.body = await renderAsyncString();await next();
});app.listen(3000, () => {console.log('App is listening on port 3000');
});

这是一个简化的业务场景,运行起来后,会在5秒的白屏后显示一段 hello world 文字。

没有用户会喜欢一个会白屏5秒的网页!在 web.dev 对 TTFB 的


http://www.ppmy.cn/ops/145980.html

相关文章

更改 pnpm 的全局存储位置

pnpm 的全局存储位置可以通过配置来改变&#xff0c;默认情况下&#xff0c;pnpm 会将全局存储位置设置在系统盘的 AppData\Local\pnpm 目录下&#xff08;在 Windows 系统上&#xff09;。但是&#xff0c;用户可以通过配置来更改这个位置。以下是如何查看和设置 pnpm 的全局存…

计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Kubernetes对象-标签和选择器

Kubernetes对象-标签和选择器 Kubernetes对象标签和选择器动机语法和字符集标签选择器基于等值的需求基于集合的需求 APILIST 和 WATCH 过滤在 API 对象中设置引用Service and ReplicationController支持基于集合的需求的资源选择节点集 高效使用标签更新标签 链接 Kubernetes对…

PaddlePaddle飞桨Linux系统Docker版安装

PaddlePaddle飞桨Linux系统Docker版安装 最近学习和了解PP飞桨&#xff0c;一切从安装开始。官网的安装教程很详细&#xff1a; https://www.paddlepaddle.org.cn/install/quick?docurl/documentation/docs/zh/install/docker/linux-docker.html 记录我在安装过程中遇到的问题…

简单发布一个npm包

将自己封装的组件上传到 npm&#xff0c;并在其他项目中下载并使用&#xff0c;是一个非常有用的技能。看完下面这些你就可以自己完成从封装组件到上传 npm 并使用的全过程。 1: 封装组件 首先&#xff0c;你需要创建一个符合标准的 npm 包。假设你已经写好了组件代码&#xf…

基于Spring Boot的工商局商家管理系统

一、系统背景与意义 随着市场经济的不断发展&#xff0c;商家数量日益增多&#xff0c;工商局对商家的管理需求也日益复杂。传统的管理方式存在诸多弊端&#xff0c;如信息不透明、管理效率低下等。因此&#xff0c;开发一种高效、便捷、智能化的工商局商家管理系统显得尤为重…

Hessian 矩阵与函数的凸性

Hessian 矩阵的定义 Hessian 矩阵是一个方形矩阵&#xff0c;用来描述多元函数的二阶偏导数信息。对于一个 n n n 维函数 f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \dots, x_n) f(x1​,x2​,…,xn​)&#xff0c;Hessian 矩阵的定义是&#xff1a; H [ ∂ 2 f ∂ x 1 2 ∂ …

gesp(二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵

gesp(二级)&#xff08;16&#xff09;洛谷&#xff1a;B4037&#xff1a;[GESP202409 二级] 小杨的 N 字矩阵 题目描述 小杨想要构造一个 m m m \times m mm 的 N N N 字矩阵&#xff08; m m m 为奇数&#xff09;&#xff0c;这个矩阵的从左上角到右下角的对角线、第 1…