2、常見優(yōu)化方案
每個團(tuán)隊所用的技術(shù)、方案都不太一樣,所以在優(yōu)化上面也會有所差異。在此,針對常見的3種方案進(jìn)行優(yōu)化分析:
前后端分離:最初的大部分的業(yè)務(wù)應(yīng)該都是前后端分離的方式,前端就聚焦在前端上面,后端專注于后端的一些接口、數(shù)據(jù)的調(diào)用。這時要怎么去優(yōu)化?首先,隨著業(yè)務(wù)越來越復(fù)雜,前端要做分層處理、模塊化,以便維護(hù)。同時, 要重點做前端資源加載的優(yōu)化,因為后端只是在做數(shù)據(jù)拉取,只要能夠抗住量,就沒有太大問題。而且,要清楚每個資源、數(shù)據(jù)在異常情況下帶來的影響。舉個列子,你的業(yè)務(wù)可能有很多很多的資源,當(dāng)?shù)谝粋€資源失敗,會帶來什么結(jié)果,第二個資源失敗,又會帶來什么結(jié)果,這些都要非常清楚。否則,當(dāng)用戶把問題反饋過來時,很難第一時間發(fā)現(xiàn)問題所在。此外,網(wǎng)絡(luò)場景要去細(xì)分,了解用戶的重點是在哪里,是在4G網(wǎng)絡(luò),還是在WIFI網(wǎng)絡(luò),優(yōu)化重點要進(jìn)行偏重。
重前端MV*:隨著前端的發(fā)展,前端MV*框架愈加常見,很多業(yè)務(wù)、團(tuán)隊都有在用。這種情況下的前端更重,就需要考慮前端并發(fā),不能讓用戶去等待很多很多的信息。同時要去做同步渲染降級,讓用戶快速看到。還要考慮在業(yè)務(wù)里面的SEO,對于瀏覽器來講,當(dāng)它拉的信息都是一樣的,它會認(rèn)為頁面的更新非常低,搜索引擎很難抓取并更新。
Node全棧研發(fā):在發(fā)現(xiàn)訴求越來越多的時候,就需要有一個能同時聚焦到前后端的工具,剛好Node就能幫我們做很多事情。這和前后端分離有點像,但又不完全一致。可以看成,前者是前端一個人后端一個人,但更好的情況是能前后端只有1個人,這樣他會更清楚前后端的邏輯,而且這些邏輯要盡可能的在前后端復(fù)用,這個時候就要考慮前后端的復(fù)用體系。Node本身很強(qiáng),但還需要注意更深入的一些東西,比如TCP/UDP協(xié)議的解析。因為你后端的數(shù)據(jù)是來源于它的后端的一些數(shù)據(jù)調(diào)用,如果這個時候能夠用node解決,那是最好的,前提是node能撐住這個量的場景。
3、效率至上
優(yōu)化的同時,要對團(tuán)隊的效率進(jìn)行掌握。效率至上來做優(yōu)化,才是合理的。對于效率,可以從以下幾個方面去看:
第一個是剛才講的復(fù)用體系,前后端復(fù)用體系怎么去復(fù)用;
第二個就是需要有完整的構(gòu)建工程體系,現(xiàn)在其實有很多構(gòu)建工具,在此不做列舉,能用工具解決的事情都不要去用人力去做,哪怕是一個簡單的更改。因為工具解決不會出問題,但人力解決難免會出問題。
第三個是需要有完整的研發(fā)技術(shù)棧,研發(fā)技術(shù)棧決定了團(tuán)隊的統(tǒng)一性,能夠幫助新人快速融入和業(yè)務(wù)的交接。
4、研發(fā)生態(tài)
雖然說效率至上,但也不能只講效率,還要有所有工具體系的一個生態(tài)閉環(huán)。它能不能自動更新、自動維護(hù),能不能有一個方式去迭代。比如說其中的一個組件,它可能會升級、會改變,升級的方案是什么?升級后怎么快速的能夠跑起來、用起來,不出問題?這就是生態(tài),生態(tài)會有很多方面,把業(yè)務(wù)里面的生態(tài)建立起來后,團(tuán)隊的優(yōu)化才是最高效的。

三、直播優(yōu)化實踐
確定了方案,下一步就要應(yīng)用到業(yè)務(wù)中實踐。同樣,每個業(yè)務(wù)的情況都不一樣,這里還是以直播的業(yè)務(wù)來舉例。
1.1、監(jiān)控——加載監(jiān)控體系
首先,要知道你的業(yè)務(wù)瓶頸,這就是通過業(yè)務(wù)的監(jiān)控分析出來的。沒有監(jiān)控是很難知道業(yè)務(wù)的瓶頸在哪里。那到底要監(jiān)控哪些點呢?可能有人會比較茫然,那么多業(yè)務(wù),哪些點是重點,哪些點是必須要做的點,難道每個都要監(jiān)控嗎?
在此,列出了在業(yè)務(wù)中需要做的點:

不管是從資源的加載,還是資源的使用,還是版本的覆蓋,還是本身的前端的錯誤,這些都是要做的。如果這些都沒有做,那么說明對業(yè)務(wù)的掌控是不夠的,你不知道用戶哪里出了問題。所以說監(jiān)控是很重要的點, 現(xiàn)在有很多開源工具可以幫助你去做,也有很多現(xiàn)成的統(tǒng)計工具。
當(dāng)然,監(jiān)控不是最終目的,優(yōu)化業(yè)務(wù)和提升業(yè)務(wù)才是。工具做好之后,就要去在監(jiān)控中發(fā)現(xiàn)問題,最好是能主動發(fā)現(xiàn)問題,而不是被動的依靠用戶投訴。