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

    文章

    974

    浏览量

    34415
  • 渲染
    +关注

    关注

    0

    文章

    60

    浏览量

    10752

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

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

收藏 人收藏

    评论

    相关推荐

    OpenHarmony Sheet 表格渲染引擎

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

    渲染工具Luxion.Keyshot.v5.2.10

    浏览器只要安装了HTML5就可以观看到,这也包括移动设备,不需要再安装任何特殊插件。KeyShotVR是一个可选的扩展软件,可以引进一个额外的渲染选项,它的设置能够创建四种不同的VR类型,产生可移植
    发表于 03-07 10:41

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

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

    LWRP的渲染流程

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

    如何​在Android上进行高刷新率渲染

    ​在Android上进行高刷新率渲染
    发表于 01-26 06:37

    一文详解渲染管线

    渲染管线简单梳理
    发表于 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语言渲染控制ForEach循环渲染

    ForEach基于数组类型数据执行循环渲染。说明,从API version 9开始,该接口支持在ArkTS卡片中使用。 一、接口描述 ForEach( arr: any
    发表于 08-18 10:50

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

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

    3D渲染——光栅化渲染原理解析

    随着技术的发展,基于 GPU 的渲染技术得到了广泛应用,日常生活中常见的 3D 动画和游戏都是通过计算机渲染技术来实现。当前主要的 3D 渲染模型包括光栅化渲染和光线追踪两大类,本文主
    的头像 发表于 05-18 17:29 1515次阅读
    3D<b class='flag-5'>渲染</b>——光栅化<b class='flag-5'>渲染</b>原理解析

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

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