0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

何为渲染?浏览器渲染和服务端渲染的联系与区别

Dbwd_Imgtec 来源:未知 作者:李倩 2018-08-01 16:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

这里的渲染,就是指生成html文档的过程,和浏览器渲染html没有关系。

浏览器端渲染,指的是用js去生成html,前端做路由。举例:React, Vue等等前端框架。适合单页面应用程序。

服务器端渲染,指的是用后台语言通过一些模版引擎生成html。举例:PHP文件、JSP文件、Python的Flask配合Jinja引擎、Django框架、Java配合vm模版引擎、NodeJS配合Jade。适合多页面应用。其实现在大部分网站还是这种形式。

所以有为了让单页面应用利于SEO,让服务器和客户端同构,也使用React/Vue渲染的方案。

PS: Segmentfault也是服务端渲染。

浏览器渲染

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

服务器渲染

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

客户端渲染路线:

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

服务端渲染路线:

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

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

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

时间耗时比较:

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

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 浏览器
    +关注

    关注

    1

    文章

    1043

    浏览量

    37227
  • 渲染
    +关注

    关注

    0

    文章

    80

    浏览量

    11416

原文标题:浏览器渲染和服务端渲染的区别,服务端渲染的几种方式

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    OpenHarmony Sheet 表格渲染引擎

    this.sheet?.[ri]?.[ci] || \"\"; }) .render(); 当然你可以精心定制每一个单元格的数据,这些数据可以来自于你的后端服务器,也可以来自于客户的输入,配合客户
    发表于 01-05 16:32

    技术选型篇__数字孪生应用开发:渲染与流渲染融合的工程适配与演进

    图图层一多,浏览器的帧率立刻断崖式下跌。到了后期,为了展示整个园区的水系流动效果和风向模拟,模型面数已经逼近浏览器崩溃的边缘,最终不得不重新采购渲染服务器,把核心场景迁移到流
    发表于 05-13 13:56

    行业洞察篇__数字孪生IOC的“双引擎”时代:当渲染遇见流渲染

    下方的排水管网水位变化。这种高频的局部操作,比如楼层剖切、设备拆解、视角缩放,对流渲染来说是一个极大的考验。因为每一次操作,都需要云端服务器重新渲染一帧画面再推送到客户,网络延迟加上
    发表于 05-14 09:50

    技术选型__数字孪生项目交付中渲染与流渲染的协同策略

    波动,操作延迟就让业务人员抓狂。反过来,也有人试图用渲染去撑一个超大规模的城市场景,模型一多,浏览器直接崩溃,交付周期一拖再拖。这种“一招鲜”的思维,在数字孪生项目越来越复杂的今天,基本是在给自己
    发表于 05-22 10:20

    技术选型之道|渲染与流渲染融合:数字孪生应用落地的理性路径

    需要频繁点击、拖拽的操作,终端GPU就能轻松应付,响应速度让人满意。流渲染则在超大规模、高保真指挥中心中占据优势,它把计算压力甩给服务器,客户只需要一台能看视频的设备即可,视觉品质可以做到电影级
    发表于 05-22 10:23

    渲染与流渲染的分化与融合:数字孪生开发套件的工程选型逻辑

    一条截然不同的路:它将复杂的图形计算全部丢给云端服务器,客户只接收压缩后的视频流。这种方法理论上能支撑无限大的场景,因为算力瓶颈在服务端而非终端。但我在多个项目中亲眼见过它的另一面——网络抖动会让画面
    发表于 05-22 10:39

    行业洞察篇__财务数字孪生的渲染选择:渲染与流渲染的协同演进逻辑

    ,在技术选型上还停留在“非此即彼”的思维里:要么全用渲染,让每个终端用户配备昂贵的图形工作站;要么全用流渲染,把所有计算压力丢给服务器,然后在高频交互场景下被延迟和带宽狠狠教训。坦白
    发表于 05-22 11:02

    场景适配论__数字孪生IOC与开发套件的协同:渲染与流渲染的融合路径

    稍微大一点,比如要同时展示全市的公共交通运力分布,帧率就会开始抖动,更别提还要叠加实时数据图层了。而流渲染渲染压力全部放到服务器端,客户只接收视频流,理论上可以承载无限复杂的场景,
    发表于 05-28 15:39

    数字孪生应用的“智能体”融合:渲染与流渲染的协同逻辑与演进路径

    渲染,依赖于用户终端的GPU能力,画面流畅但面对海量数据加载时容易崩溃;要么是纯粹的流渲染,把运算压力丢给服务器,画质顶级但交互延迟小问题不断。这两种单一模式,本质上都是在解决“怎
    发表于 05-28 15:59

    渲染与流渲染的融合之道:数字孪生应用开发套件的工程选型思路

    超大城市级地理信息底图的全景漫游,以及园区内几百个智能路灯的实时控制操作界面。坦白讲,当时我们尝试了两种方案:用纯Web渲染,结果城市场景加载到一半,浏览器直接崩溃;切换到服务端
    发表于 05-28 16:09

    渲染与流渲染的融合之道:数字孪生应用开发工具的演进逻辑

    ,同一个应用在PC的Chrome浏览器、iPad上的Safari和手机上打开,观察加载速度、交互流畅度和画质是否接受。如果发现移动还在用流渲染方案的超大视频流推送,而用户的网络环境
    发表于 05-28 16:12

    请问TableLayout图片是用什么渲染的?

    TableLayout图片是用什么渲染的,服务器返回的是网络图片String格式的。
    发表于 03-24 11:29

    ARM服务器准备如何解决服务端渲染的问题

    针对云手机、视频流云游戏行业,ARM服务器准备如何解决服务端渲染的问题?目前的状况了解,PCIE显卡对安卓游戏的支持还不够成熟
    发表于 09-13 14:58

    揭秘:实时渲染、离线渲染、云渲染和混合渲染区别

    渲染,就是将3D模型转换成2D图像,并最终呈现在屏幕上的过程。常见的渲染类型有以下几种:实时渲染离线渲染渲染混合
    的头像 发表于 12-26 08:27 2271次阅读
    揭秘:实时<b class='flag-5'>渲染</b>、离线<b class='flag-5'>渲染</b>、云<b class='flag-5'>渲染</b>和混合<b class='flag-5'>渲染</b>的<b class='flag-5'>区别</b>

    如何优化SSR渲染性能

    性能的方法: 1. 缓存策略 缓存静态资源 服务端缓存 :使用如Redis等缓存系统存储静态资源,减少数据库和文件系统的访问。 客户缓存 :通过设置HTTP缓存头(如 Cache-Control ),让浏览器缓存静态资源。 缓
    的头像 发表于 11-18 11:31 1798次阅读