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

    文章

    1015

    浏览量

    35269
  • 渲染
    +关注

    关注

    0

    文章

    69

    浏览量

    10907

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

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

收藏 人收藏

    评论

    相关推荐

    OpenHarmony Sheet 表格渲染引擎

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

    HarmonyOS实战开发-合理选择条件渲染和显隐控制

    开发者可以通过条件渲染或显隐控制两种方式来实现组件在显示和隐藏间的切换。本文从两者原理机制的区别出发,对二者适用场景分别进行说明,实现相应适用场景的示例并给出性能对比数据。 原理机制 条件渲染
    发表于 05-10 15:16

    何为GRID渲染设置适当的Xorg.conf ?

    大家好〜我们正在尝试为我们的OpenGL应用程序启动并运行GRID实例, 但必须在设置中遗漏一些东西......如何为GRID渲染设置适当的Xorg.conf ???安装nVidia GRID
    发表于 09-27 16:03

    LWRP的渲染流程

    LWRP渲染流程梳理
    发表于 01-21 07:01

    一文详解渲染管线

    渲染管线简单梳理
    发表于 02-03 07:13

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

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

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

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

    OpenHarmony 3.2 Beta Audio——音频渲染

    └── services#服务端 └── audio_service├── BUILD.gn├── client#IPC调用中的proxy│├── include
    发表于 03-02 14:28

    缺少VGlite字体渲染api文档,求分享

    我试图使用 vglite api 在 MIMXRT1166/1176 上使用 verisilicon gpu 渲染图形,并且特别缺乏关于此的文档。 我能够很好地初始化 GPU 并渲染矢量和光栅对象
    发表于 04-24 06:42

    HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制概述

    ArkUI通过自定义组件的build()函数和@builder装饰中的声明式UI描述语句构建相应的UI。 在声明式描述语句中开发者除了使用系统组件外,还可以使用渲染控制语句来辅助UI的构建,这些
    发表于 08-09 09:54

    HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制if/else条件渲染

    ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,使用if、else和else if渲染对应状态下的UI内容。说明:从API version 9开始,该接口支持在ArkTS卡片中使用。一
    发表于 08-21 14:29

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

    渲染,就是将3D模型转换成2D图像,并最终呈现在屏幕上的过程。常见的渲染类型有以下几种:实时渲染离线渲染渲染混合
    的头像 发表于 12-26 08:27 741次阅读
    揭秘:实时<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>

    探索渲染技术与云渲染的魅力!

    在数字艺术和计算机图形领域中,渲染技术占据着至关重要的地位。随着科技的进步,云渲染作为一种新兴的渲染方式,正逐渐受到业界的关注和应用。本文将对渲染技术和云
    的头像 发表于 04-12 08:30 254次阅读
    探索<b class='flag-5'>渲染</b>技术与云<b class='flag-5'>渲染</b>的魅力!

    CPU渲染和GPU渲染优劣分析

    使用计算机进行渲染时,有两种流行的系统:基于中央处理单元(CPU)或基于图形处理单元(GPU)。CPU渲染利用计算机的CPU来执行场景并将其渲染到接近完美。这也是执行渲染的更传统方式。
    的头像 发表于 05-23 08:27 529次阅读
    CPU<b class='flag-5'>渲染</b>和GPU<b class='flag-5'>渲染</b>优劣分析

    如何优化SSR渲染性能

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