详解篇一:浅析前后端分离的效率优势

Posted 老猿挂印

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解篇一:浅析前后端分离的效率优势相关的知识,希望对你有一定的参考价值。

传统的服务端渲染静态html返回,与现在流行的前后端分离相比,谁的效率更高?

提问者:AkagiInc




00

当我在说效率的时候, 我们在说什么?


既然我们说到效率, 今天就一次过满足你两个愿望。

1.开发效率;

2.运行效率。

讨论前后分离带来的效率变化,为了更好地在团队里推(qiang)行(zhi)前后分离,就需要从这两个角度去说服(dui)开发人员。


01

开发效率


我们先假设一种理想情况

1.前期的需求设计接口定义已经非常完善;

2.前后端对分离后的技术手段都已经非常熟练。

在这个大背景下,跟过去同样的工作量(假设工作量本质上是相同的)。


那么 前后分离 可以让任务更加多地并行开发,无疑这个时候开发效率是能得到显著的提高的。


同时,前后分离可以让一套系统的不同部分,进行分别迭代、分别进化。这对于敏捷开发要求的小步快跑、快速迭代是有与生俱来的好感的, 这无疑是不断优化系统的路上的强大推力。


但现实中的情况却不是这样

通常来说团队更习惯于过去已经掌握的技巧,前端写完静态页面,再由后端套模板引擎标签,最后一体化发布。


他们已经在这个体系下非常熟练地开发各种项目,如果强行推行新的技术手段,显然在当下是会牺牲掉一些开发效率。


那么结论到底是如何?

来自个人的一些见解:


着眼于长远考虑,前后分离可以让开发效率有很大的提升,并且开发质量也会因为更多的专业化,工程化而得到前所未有的提高。


2016年是前端工程化重要的一年,相信没有人会质疑工程化带来的优势。


回顾前文阐述的一种理想情况,也并不是遥不可及,想要蜕变就要付出阶段性代价,争取早日达到“理想情况”才是一个技术团队的终极追求。


所以,从开发效率的角度来考虑,建议早日走上前后分离的道路。


03

运行效率


我们把 计算效率 和 传输效率 都归到这个环节里来讨论。


计算效率

对于老一套的方法,所有页面看到的东西,都要通过后端程序,根据模板渲染出一个html文档。


所谓的渲染,就是字符串的查找、替换和拼接。


这种操作是非常消耗计算资源的,那么同样的千万次请求,是分发到客户端本地做渲染,还是在服务器统一渲染?


相信大家已经能明白个中的差别。


传输效率

如果后端只提供数据接口,可以非常有效地减少网络传输量。


过去:

<p class="tit xxx">

    <a href="/123">标题</a>

</p>

现在:

{id:123,title:"标题"} 

以上只是一个例子,实际情况中渲染后的内容会比这个更多。


04

前后分离的缺点:首屏体验


前面我们讨论了前后分离的几个优势,这里我们来说一下前后分离的一个缺点:


如果说前后分离还有一个缺点的话,那就是首屏体验。



那么如果浏览器复杂渲染,服务器负责给数据,必然会引起一个问题:

网络不佳的情况下, 会出现白屏

原因就是页面准备好了,而数据未准备好,又或者因为其他外部资源未就绪,导致渲染迟迟未进行,用户只能看着白屏干等。


解决这个问题有两个思路

1.做一个加载中的动效盖过去

2.首屏交还给服务端渲染

很难受哪一种方案目前更受欢迎。


从观察的角度看,内容为主的站点会倾向首屏服务端渲染,而动效更多的站点更常见有一个加载中的动画,比如一些web游戏。


05

对于前后分离的小建议


考虑到前后分离的各种优势,以及其所带来的首屏体验问题,我有一些小建议送给各位:

1.选择一种合适的方案解决首屏体验问题;

2.首屏之后的网络交互使用前后分离。

既能提高服务器效能,又能提高前端体验,也节省了用户的流量。




请猛戳右边二维码





长按关注

【FCC成都社区】

以上是关于详解篇一:浅析前后端分离的效率优势的主要内容,如果未能解决你的问题,请参考以下文章

nodeJS(前后端分离、优势、不足

深入浅出:了解前后端分离优势以及前后端接口联调

深入浅出:了解前后端分离优势前后端接口联调以及优化问题

全网最新Redis结合Kaptcha实现验证码功能篇一(前后端分离)

浅析前后端分离

怎样才能实现前后端分离,提高开发工作效率?