何为渲染?

如果我们只是想显示一堆不变的数据,那么我们直接写一个a.html丢到服务器上让客户端访问就可以了。但这是基本不可能的事情,数据一般是变化的。你不可能为每套数据写一个视图,所以我们需要分离数据和视图,然后使用一种技术将数据塞到视图中,这种技术就叫渲染。这工作放在服务器上做就是服务器渲染,放在浏览器做就是浏览器渲染。

这里的渲染,就是指生成html文档的过程,和浏览器渲染html没有关系。
浏览器端渲染,指的是用js去生成html,前端做路由。举例:React, Vue等等前端框架。适合单页面应用程序。
服务器端渲染,指的是用后台语言通过一些模版引擎生成html。举例:PHP文件、JSP文件、Python的Flask配合Jinja引擎、Django框架、Java配合vm模版引擎、NodeJS配合Jade。适合多页面应用。其实现在大部分网站还是这种形式。
所以有为了让单页面应用利于SEO,让服务器和客户端同构,也使用React/Vue渲染的方案。

浏览器渲染

单页应用用的基本都是浏览器渲染。优点很明确,后端只提供数据,前端做视图和交互逻辑,分工明确。服务器只提供接口,路由以及渲染都丢给前端,服务器计算压力变轻了。但是弱点就是用户等待时间变长了,尤其在请求数多而且有一定先后顺序的时候。

客户端渲染路线:

  1. 请求一个html ->
  2. 服务端返回一个html ->
  3. 浏览器下载html里面的js/css文件 ->
  4. 等待js文件下载完成 ->
  5. 等待js加载并初始化完成 ->
  6. js代码终于可以运行,由js代码向后端请求数据( ajax/fetch ) ->
  7. 等待后端数据返回 ->
  8. 客户端从无到完整地,把数据渲染为响应页面

服务器渲染

服务器接到用户请求之后,计算出用户需要的数据,然后将数据更新成视图(也就是一串dom字符)发给客户端,客户端直接将这串字符塞进页面即可。这样做的好处是响应很快,用户体验会比较好,另外对于搜索引擎来说也是友好的,有SEO优化。nodejs层的服务器渲染,还有一个明显的好处就是前端性能优化更顺手了,可操作的空间大了。但是缺点也很明显,如果不是增加一个node层的话,前后端责任分工不明,不能很好的并行开发。另外也增加了服务器计算压力(虽然可以做渲染缓存,但毕竟是多做了计算)。

服务端渲染路线:

  1. 请求一个html ->
  2. 服务端请求数据( 内网请求快 ) ->
  3. 服务器初始渲染(服务端性能好,较快) ->
  4. 服务端返回已经有正确内容的页面 ->
  5. 客户端请求js/css文件 ->
  6. 等待js文件下载完成 ->
  7. 等待js加载并初始化完成 ->
  8. 客户端把剩下一部分渲染完成( 内容小,渲染快 )

对同一个组件,服务端渲染“可视的”一部分( render/componentWillMount部分代码 ),为确保组件有完善的生命周期及事件处理,客户端需要再次渲染。即:服务端渲染,实际上也是需要客户端进行 再次地、但开销很小的二次渲染。

根据以上特点,在用户体验要求比较高的页面(首屏)、重复较多的公共页面可以考虑使用服务器渲染,减少ajax请求和提升用户体验。

时间耗时比较:

1. 数据请求:
由服务端请求数据而不是客户端请求数据,这是“快”的一个主要原因。服务端在内网进行请求,数据响应速度快。客户端在不同网络环境进行数据请求,且外网http请求开销大,导致时间差(主要原因)。

2. 步骤:
服务端是先请求数据然后渲染“可视”部分,而客户端是等待js代码下载、加载完成再请求数据、渲染。即:服务端渲染不用等待js代码下载完成再请求数据,并会返回一个已经有内容的页面。

渲染性能:服务端性能比客户端高,渲染速度快( 猜测,该项数据不详 )。

3. 渲染内容: 服务端渲染会把”可视“部分先渲染,然后交给客户端再作部分渲染。而客户端渲染,则是从无到有,需要经历完整的渲染步骤。

浏览器渲染和服务器渲染区别相关推荐

  1. 前端后分离深入分析 ——浏览器渲染和服务器渲染区别

    1.为什么会有服务器渲染与客户端渲染? 首先理解服务器和浏览器客户端之间传递的是什么--HTML,CSS,JavaScript的文件以及数据载体json(xml)等文件,而文件都是静态,之所以动态是应 ...

  2. python 服务端渲染_客户端渲染和服务器渲染的区别

    我们都知道,网页上的很多内容之所以能那么丰富,是因为大量的css.js去渲染出这个页面.那么他们是如何渲染的呢?那么就要说到我们本文的两种渲染方式了,即客户端渲染和服务端渲染. 正文 本文将分别讲述两 ...

  3. 客户端渲染和服务器渲染的区别

    客户端渲染和服务器渲染的区别 前言 正文 一.客户端渲染 图片讲解 文字讲解 真实的客户端渲染案例 优点 缺点 二.服务器渲染 图片讲解 文字讲解 真实的服务器渲染案例 优点 缺点 三.如何区分客户端 ...

  4. 计网 | 服务器到底是什么?浏览器和Web服务器的区别

    服务器:我是谁 可能有很多网友不清楚,服务器和普通电脑到底有什么区别?对于普通用户而言,确实对服务器感觉很神秘,不知道服务器到底是个什么东东. 首先可以很明确的告诉你,服务器也是电脑,服务器是为电脑提 ...

  5. 前端:客户端渲染 vs 服务器渲染

    渲染工作应该由谁完成? 时下,前端 UI 设计越来越复杂,可谓"XX与XX齐飞,XX共XX一色". 越来越复杂的 UI 意味着越来越重的 渲染工作. 目前通常有两种选择:服务器渲染 ...

  6. 前端渲染:服务器渲染 or 客户端渲染

    渲染工作应该由谁完成? 时下,前端 UI 设计越来越复杂,可谓"XX与XX齐飞,XX共XX一色". 越来越复杂的 UI 意味着越来越重的 渲染工作. 目前通常有两种选择:服务器渲染 ...

  7. 关于服务器渲染与客户端渲染的区别

    服务器渲染: 也称SSR.当浏览器发送请求时,在服务器上渲染完整的第一个屏幕dom结构,即将数据与html整合,之后返回给浏览器. 客户端渲染: 当浏览器发送请求后,服务器只会发送html框架,浏览器 ...

  8. 一文搞懂什么是前端渲染和后端渲染以及两者的区别

    一.什么是后端渲染? 我们都知道现在的网页都由html+css+js组成,但是在比较早的时候是没有js(JavaScript)的.所以那时候网页开发一般都是用html+css+jsp(java ser ...

  9. 爬虫笔记1——服务器渲染和客户端渲染

    参考:客户端渲染和服务器渲染的区别 - 知乎 服务器渲染: 浏览器向服务器发送一次请求,在服务器端直接将数据和html整合在一起返回给浏览器,即可以直接在网页源代码中看到数据. 容易被爬虫爬取数据,同 ...

最新文章

  1. oracle oats 安装,Mentor完整培训教程.pdf
  2. 面试了一个 46 岁的程序员,我思绪万千!
  3. Science:穿梭于个体大脑与群体大脑之间探索社会智能
  4. 牛客华为机试第1题python
  5. (转)oracle 11g安装后用户名忘记怎么办
  6. hanganalyz 性能诊断工具
  7. C# 委托链、多路广播委托
  8. 学生信息管理系统c 语言程序设计报告,C语言程序设计报告(学生信息管理系统)[1].txt...
  9. SQL Server商业智能功能–创建简单的OLAP多维数据集
  10. kafka逻辑示意图以及命令
  11. 2019牛客多校 Round2
  12. jersey子资源api使用和源码分析
  13. android horizontalscrollview顶部导航,带有居中效果的HorizontalScrollView使用说明
  14. android 图片背景模糊,实现图片模糊(背景虚化),实现图片模糊背景
  15. 解决Safari使用谷歌搜索引擎需要二次确认
  16. 街头篮球服务器一直维护,《街头篮球》2.8新版本停服维护更新公告
  17. Liunx 安装redis
  18. android百度地图路线查询,Android百度地图——路线规划搜索
  19. 【微信小程序】二维数组列表渲染
  20. 淘宝网热浪引擎平台资费规则

热门文章

  1. Fegin根据配置项请求不同的地址实现方法
  2. ReLLIE Deep Reinforcement Learning for Customized Low-Light Image Enhancement
  3. 谁在为十万一台的卡萨帝洗衣机买单?
  4. 2.CSS的字体,文本,背景属性
  5. Python Cartopy地图投影【1】
  6. Android--MediaRecorder实现手机录像
  7. 安卓手机与蓝牙模块联合调试(五)-- 编写自己的蓝牙控制界面控制单片
  8. android activity 重复onCreate问题
  9. 影响因子14.65:16S全长测序+低丰度简化菌群,提供根腐病防控新视角
  10. 成都拓嘉辰丰:拼多多草稿箱怎样删除商品,草稿箱在哪