当前位置: 首页 > news >正文

网页渲染的两条赛道

CSR vs SSR:网页渲染的两条赛道

什么是CSR和SSR?

CSR(客户端渲染)是将渲染工作交给浏览器的JavaScript完成;而SSR(服务器端渲染)则是在服务器上完成HTML的生成工作,直接将渲染好的页面发送给浏览器。

🏭 生活类比:想象两家家具公司的不同销售模式

  • CSR = 宜家模式:顾客拿到的是一个包装盒和说明书(HTML框架+JavaScript),回家后需要自己动手组装(浏览器加载JS并渲染页面)
  • SSR = 传统家具店:顾客拿到的是已经组装好的成品家具(完整HTML),可以立即使用(浏览器直接展示)

渲染流程对比

CSR渲染流程

┌────────────┐    ┌───────────────┐    ┌───────────────┐    ┌───────────────┐
│ 浏览器请求 │───►│ 服务器返回最小 │───►│ 浏览器加载JS  │───►│ JS获取数据并  │
│ 页面      │    │ HTML和JS包    │    │ 框架代码      │    │ 渲染完整页面   │
└────────────┘    └───────────────┘    └───────────────┘    └───────────────┘│┌───────────────────────────────────────────┘▼┌──────────────┐│ 页面可交互   │└──────────────┘

SSR渲染流程

┌────────────┐    ┌───────────────┐    ┌───────────────┐    ┌───────────────┐
│ 浏览器请求 │───►│ 服务器获取数据 │───►│ 服务器渲染    │───►│ 浏览器接收完整│
│ 页面      │    │ 和页面状态     │    │ 完整HTML      │    │ HTML并展示    │
└────────────┘    └───────────────┘    └───────────────┘    └───────────────┘│┌───────────────────────────────────────────┘▼┌──────────────┐│ 加载JS使页面 ││ 可交互(激活) │└──────────────┘

深入理解:餐厅类比

🍽️ CSR就像"自助餐厅"

  • 顾客进店后先找座位(加载最小HTML)
  • 然后拿托盘去取餐(浏览器执行JS)
  • 逐一挑选自己想要的食物(API获取数据)
  • 最后才能开始享用美食(页面完成渲染)
  • 优点:可以按自己的喜好和节奏取餐
  • 缺点:从进门到开始吃需要一定时间

🍽️ SSR就像"传统餐厅"

  • 顾客点餐后,厨师在后厨准备好所有菜品(服务器渲染)
  • 服务员将已经摆盘好的菜直接端到桌上(返回完整HTML)
  • 顾客一坐下就能立即看到食物(首屏展示快)
  • 但如果要换菜或加菜,需要重新叫服务员处理(页面跳转)

代码示例:同一个应用的两种实现

1. CSR实现 (React)

// index.html - 最小HTML
<!DOCTYPE html>
<html>
<head><title>我的应用</title>
http://www.xdnf.cn/news/467173.html

相关文章:

  • 语音识别——语音转文字
  • 20250515通过以太网让VLC拉取视熙科技的机芯的rtsp视频流的步骤
  • Spring Boot 拦截器:解锁5大实用场景
  • QImage高效率像素操作的方法
  • 基于windows环境Oracle主备切换之后OGG同步进程恢复
  • 兰亭妙微B端UI设计:融合多元风格,点亮品牌魅力
  • 嵌软面试每日一阅----通信协议篇(二)之TCP
  • 一招解决Tailwindcss4.x与其他库样式冲突问题
  • 报销单业务笔记
  • 中国近代史2
  • 深度学习框架对比---Pytorch和TensorFlow
  • MySQL 学习(十)执行一条查询语句的内部执行过程、MySQL分层
  • 验证可行分享-Rancher部署文档
  • CSRF攻击 + 观测iframe加载时间利用时间响应差异侧信道攻击 -- reelfreaks DefCamp 2024
  • 第一天的尝试
  • C语言中的指定初始化器
  • java 八股
  • Opencv C++写中文(来自Gemini)
  • uniapp+vite+cli模板引入tailwindcss
  • 智慧鱼塘可视化管理:养殖业数字孪生
  • [IMX] 02.GPIO 寄存器
  • Electron 应用的升级机制详解
  • 文科生如何重新开始学习数学?
  • OGSM 从上到下逐级分解策略:从战略目标到部门计划的标准化落地路径
  • 使用 frp 实现内网穿透:从基础到进阶
  • 司法系统之外的第三方平台未经许可披露企业涉诉信息是否构成侵权
  • 学前数学思维:整体代换
  • 深度解析:如何用DeepSeek等大模型增强MySQL运维效率
  • 访问 Docker 官方镜像源(包括代理)全部被“重置连接”或超时
  • Linux系统中部署java服务(docker)