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