当前端渲染遇上边缘计算_前端边缘计算_火山引擎边缘云的博客-程序员信息网

技术标签: 边缘计算  前端  javascript  

前端渲染方式随着前端技术的演进而不断革新,边缘计算的出现使前端渲染从 SSR(Node)时代开始迈入边缘渲染(ESR)时代。本文主要介绍前端渲染的发展演进,以及边缘渲染的原理、优势及应用场景。主要内容如下:

  1. 前端渲染的发展
  2. 边缘渲染的原理和优势
  3. 应用场景举例
  4. 总结和展望

01 前端渲染的发展

在讲前端边缘渲染之前,我们有必要先了解一下前端渲染的发展历史以及前端各项性能指标优化是如何被提上议程的,之后我们再反观边缘渲染(ESR)的出现就会发现也是水到渠成。

其实整个前端渲染方式是随着前端技术的演进而不断革新的,大致可以分为如下历程。

 

SSR(Server Side Rendering)时代(JSP、PHP)

最早期的前端渲染(2005年 Ajax 推出之前)都是和后端混写的,比如 JSP、PHP 等写法。但是前后端写法杂糅在一起导致开发效率低下,比如改个样式还要重新编译一遍,并且页面也会写的很重。

 

CSR(Client Side Rendering)时代

后面有了 Ajax 技术之后,再加上通过 CDN 缓存静态资源之后,前端 SPA + CSR 渲染有了飞跃式的发展,这种模式下前端处理所有逻辑、内容填充和路由,数据加载部分通过 Ajax 从后端获取,因此很好的解决了前后端分工开发的问题。其具体请求时间线可参见下图。

 

但是由于请求是全异步的,其一是对 SEO 不利,其二是需要 HTML + JS 处理数据拼接才能在前端完成渲染,其首屏白屏时间会较长,特别在一些低端机型上体验更是堪忧。

SSR(Node)时代

再后来随着 Node 引领的全栈技术的发展,前端又回到了当初的 SSR 路上,只不过这次的回归是一次螺旋式的上升。

首先是前后端全是 JS 语法,大部分代码都是可复用的,其次是 SEO 场景友好,服务端渲染好后直接返回最终的 HTML,减少了白屏等待时间,过多异步请求导致的性能问题可以下放到服务端解决,也能有效避免多次的数据获取、内容填充,浏览器只绑定相关的 JS 逻辑、事件即可。其具体请求时间线可参见下图。

 

ESR(Edge Side Rendering)时代

后面随着边缘计算的发展,由于边缘计算节点距离用户更近,有更短网络延时的优势,我们可以将页面进行动静拆分,将静态内容缓存在 CDN 先快速返回给用户,然后在边缘计算节点上发起动态内容的请求,之后将动态内容与静态部分以流的形式进行拼接,从而进一步提高了用户的首屏加载时间,尤其在边缘地区或者弱网环境也有能拥有很好的用户体验,此外还减少原先 SSR 服务器压力。

 

02 边缘渲染原理和优势

刚才也提到了,边缘渲染就是借助边缘计算能力,将返回的内容进行静态+动态部分拆分并以流的形式返回,最终实现渲染提速。其中,静态部分依托 CDN 的缓存能力,优先返回给用户,随后在边缘计算节点上继续发起动态数据请求,并拼接在静态部分之后,继续流式返回。因此,其优势也是显而易见:

  1. TTFB(Time To First Byte)很短:因为静态内容在 CDN 缓存住了,会很快的返回给用户。
  2. FP(First Paint)很短:因为在静态内容返回后,已经可以开始 HTML 的解析以及 JS、CSS 的下载和执行。
  3. FMP(First Meaningful Paint)很短:因为动态内容的请求是在边缘计算节点发起,相比于客户端与服务端直连,请求减少了 TCP 建连和网络传输开销,而且由于动态部分是以 chunked 形式流式返回,FMP 就会很短,比如搜索网站的第一个搜索结果就会首先绘制出来。

总体而言,相对于传统中心渲染,边缘渲染具有节点分布较广,距离用户更近等优势,让用户可以在更短的时间获取到网站资源进行渲染,同时可以减少中心服务的请求压力,从而达到渲染提速+分散算力的效果。

03 应用场景举例

场景一:将 SSR 服务直接部署在边缘节点,中心服务提供数据接口

直接将 SSR 服务搬到边缘部署,具体流程如下图。

 

场景二:边缘服务读取缓存的静态部分 HTML,中心服务提供动态 HTML

 

SSR 服务部署在中心,边缘流式返回 HTML 内容(利用 HTTP Transfer-Encoding: chunked 分块传输机制),需要分离静态与动态部分,具体流程如下图。

  • 边缘服务:请求静态 HTML 并返回,同时请求中心 SSR 服务,获取动态内容并返回
  • SSR 服务:去除静态 HTML,把动态部分返回给边缘服务

 

举例

以一个 Demo 网站为例,顶部导航可以视为静态部分缓存在边缘 CDN,下面的卡片是动态部分回源到中心服务获取数据。

 

通过 Demo 对比,可发现边缘渲染(ESR) 比 SSR 的有着明显优势,其静态顶导首先绘出,后面动态数据也比 SSR 的返回要快。

 

此外,结合如下的埋点统计,边缘渲染(ESR)的优势更加得以印证。

 

04 总结和展望

  • 技术实现: 边缘渲染(ESR)适应于对页面渲染性能较高的场景,借助边缘计算在 SSR 的基础上进一步优化首屏绘制的时间,降低用户页面的白屏等待时间;
  • 部署方式: 目前实现方式主要借助于边缘 FaaS 部署边缘渲染(ESR)服务,具有快速访问、弹性扩缩容、低运维成本等优点;后期提供边缘函数(边缘 JS 运行时)部署,用户无需关心边缘节点,只需专注于代码本身,修改代码上传发布即可,相对于 node 服务,JS 运行时能够提供更高的运行效率;
  • 技术展望: 边缘渲染(ESR)目前是在 SSR 基础上,结合边缘计算进行的性能提升;将来火山引擎前端团队将结合函数与边缘计算能力,在前端 Serverless 部署方向进行更多的探索,感兴趣的同学敬请期待。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/VE_Edge/article/details/122200086

智能推荐

java下载多图压缩成包_爱吃榴莲酥的姑娘的博客-程序员信息网

@RequestMapping(value = "/download") public void download(HttpServletRequest request,HttpServletResponse response) throws Exception { PageData pd = this.getPageData(); pd = printm...

面试了一个 46 岁的程序员,我思绪万千_程序员生活志的博客-程序员信息网

转载提示:这是一篇旧文最近一直忙于面试,人事推给了我一份简历,职位是算法工程师,年龄是 46 岁,我揉了揉眼睛后再看看,确实是 46 岁。抱着忐忑的心,我电话面试一番后,还是不觉得他和我们的团队很适合。人都会有同理心,尤其是这么大岁数的程序员还是为了生计来找工作,心还是会隐隐触痛。年龄是多数程序员的天敌,之前没有概念因为生活中样本较少,现在来了一个鲜明的例子,并且还需要自己亲手关闭一扇...

学习前端Vue——by盐焗西蓝花_iiiiiill的博客-程序员信息网

经过断断续续近一个月的学习,总算跟着b站黑马程序员的视频入门了Vue,对前端框架有了一个新的认识接下来总结一下:课程主要分为四个板块,Vue基础,本地应用,网络应用,综合应用Vue基础:导入Vue,准备html结构,把Vue挂载上去,再在里面准备data和methods本地应用:实现计数器,图片切换,记事本的制作网络应用:结合axios,和准备好的接口综合开发;制作天知道-天气查询页面...

javaweb 图书管理系统完整代码_Javaweb-案例练习-1-验证邮箱是否存在_weixin_39623273的博客-程序员信息网

如何验证邮箱是否存在前面我们做了一个AJAX练习,就是验证用户名是否存在,现在回到我们的图书管理系统,来写一个如何验证邮箱是否存在的。还是接着之前图书管理后台和前台这个项目,现在是在register.jsp的页面的邮箱验证。1. 项目环境准备之前我们是在一个单独的AJAX web项目里做的用户名是否存在的验证,现在我们需要把js中获取创建XMLHttpRequest对象的js代码复制过来。这个图书...

音视频开发著作《Android音视频开发》终于发售了,先来一波签名送书福利!_码农突围的博客-程序员信息网

经历了两年多,我的著作终于和大家见面了,写书是一件很磨练人耐力的事情,从打算写一本书开始后,心里无时不刻有一块大石头压在头顶。一来要保证专业性,二来要保证质量,同时还要兼具备怎么表达,才能让别人明白所说的意思。所以看起来没有那么简单。近年来,直播,短视频行业相关业务发展迅猛。Android音视频开发门槛相对高些,很多有特色或者核心模块基本都是NDK开发,而NDK开发很多实际上都是C/C++写的Co...

linux没有mysqld文件,无法在Linux上启动mysql-无法访问“ /var/log/mysqld.log”:_比利海灵顿的博客-程序员信息网

我正在尝试在Red Hat 7上启动mysql.我按照以下说明删除了maria db并安装了mysql:> service mysql startRedirecting to /bin/systemctl start mysql.servicescreen hangs here...^C[[email protected] mysql]# service mysql statusRedirecting to...

随便推点

ASP.NET 中的 Async/Await 简介_weixin_34124651的博客-程序员信息网

本文转载自MSDN作者:Stephen Cleary原文地址:https://msdn.microsoft.com/en-us/magazine/dn802603.aspx大多数有关 async/await 的在线资源假定您正在开发客户端应用程序,但在服务器上有 async 的位置吗?可以非常肯定地回答“有”。本文是对 ASP.NET 上异步请求的概念性概述,并提供了对最佳在线资源的引用...

HDU5126 stars(CDQ分治)_weixin_30247307的博客-程序员信息网

传送门大意:向三维空间中加点,询问一个三维区间中点的个数。解题思路:带修改CDQ,将修改和询问一起插入CDQ分治询问。(询问可以由8个前缀和加减操作实现)其中第一层CDQ维护x有序。第二层CDQ维护y有序并且将z离线处理完更新答案。注意要将原数组的辅助数组推入第二层CDQ否则会将顺序毁坏。代码: 1 #include<cstdio> ...

ios程序猿攻城策略_weixin_30315435的博客-程序员信息网

这也是一个面向对象的问题,作为实例对象的你需要一步一步去攻城拔寨。待各处插满了自己的旗帜,回过头来,你会感谢一路走来的自己!一、入门 面向对象编程基础(类和继承,变量和方法的作用域,MVC基本概念,分类)方法和函数(消息,类定义和属性,与C/C++的混合编程)内存管理(strong/weak, ARC自动引用计数,自动释放对象)代码设计模式(Block块语句,Target/a...

重磅!10月1日之后,你新建的GitHub库默认分支不叫「master」了!_程序员小乐的博客-程序员信息网

点击上方 "程序员小乐"关注,星标或置顶一起成长每天凌晨00点00分,第一时间与你相约每日英文Smile. Let everyone knows that t...

OrangePi zero puls H5 安装armbian_weixin_30721899的博客-程序员信息网

安装armbian我购买了OrangePi zero puls H5 ,他里面预装的安卓系统,启动要一分钟,我是服的。所以我想给他安装armbian。我首先去下载了armbian对应的镜像,并且烧录到了sd卡中。出现以下问题U-Boot 2017.11-armbian (Jan 25 2018 - 08:05:45 +0100) Allwinner TechnologyCPU: A...

推荐文章

热门文章

相关标签