發(fā)布時(shí)間:2021-02-26 19:35:14
作者:微紅科技
閱讀次數(shù):6072
當(dāng)前位置: 微紅科技 - 新聞動(dòng)態(tài) - 提升App開(kāi)發(fā)性能的技巧有哪些?
現(xiàn)在,App日益重視用戶(hù)的交互體驗(yàn),了解性能優(yōu)化的方式則可以有效提高用戶(hù)體驗(yàn)。閱讀和實(shí)踐下面的性能優(yōu)化技巧,可以幫你改善應(yīng)用的流暢度、渲染時(shí)間和其他方面的性能表現(xiàn)。
對(duì)App進(jìn)行性能優(yōu)化是一份冗雜沉重的工作,這不僅是因?yàn)闃?gòu)建一個(gè)App需要前后端協(xié)作,而且需要多方面的技術(shù)棧:數(shù)據(jù)庫(kù)、后端、前端,需要運(yùn)行在多種平臺(tái):iOS,安卓,Chrome,F(xiàn)irefox,Edge,這太復(fù)雜了!不過(guò),還是有一些歷經(jīng)實(shí)踐的通用方式可以用來(lái)優(yōu)化App的性能。
移動(dòng)應(yīng)用市場(chǎng)用戶(hù)爭(zhēng)奪戰(zhàn)日益激烈,原來(lái)做App靠的是拼想法、拼創(chuàng)意、拼是否抓住用戶(hù)痛點(diǎn);現(xiàn)在精細(xì)化用戶(hù)體驗(yàn)成為了一個(gè)App能否留存用戶(hù)的關(guān)鍵問(wèn)題,一旦用戶(hù)覺(jué)得體驗(yàn)不暢,馬上就有競(jìng)品App后補(bǔ),如何開(kāi)發(fā)高性能的移動(dòng)應(yīng)用,已成為開(kāi)發(fā)者最為關(guān)心的問(wèn)題之一,對(duì)此,馬海祥特意總結(jié)了以下提升App開(kāi)發(fā)性能的技巧:
1、規(guī)劃好應(yīng)用功能,做好應(yīng)用架構(gòu)評(píng)估
用戶(hù)體驗(yàn)開(kāi)始于App開(kāi)發(fā)初始規(guī)劃階段,當(dāng)你夢(mèng)想開(kāi)發(fā)一個(gè)App改變世界之前,先想好App主要解決用戶(hù)的哪些真實(shí)需求,提煉出App的核心功能,一個(gè)App并不是功能越豐富越好,核心功能才能為用戶(hù)帶來(lái)不可替代的價(jià)值。
想清楚核心功能,才能做好應(yīng)用架構(gòu)評(píng)估,應(yīng)用程序性能不佳可能是因?yàn)榭蓴U(kuò)展性限制、不匹配的技術(shù)選擇、低效的網(wǎng)絡(luò)配置以及UI設(shè)計(jì)不符合移動(dòng)端使用習(xí)慣等因素,清晰完整的App架構(gòu)規(guī)劃有利于構(gòu)建用戶(hù)所需的系統(tǒng)功能構(gòu)建(具體可查看馬海祥博客《詳解APP軟件開(kāi)發(fā)過(guò)程中的解構(gòu)和重構(gòu)》的相關(guān)介紹)。
2、良好的編程習(xí)慣
良好的編程習(xí)慣不僅可以使程序代碼易于讀懂和修改,還可以使程序結(jié)構(gòu)合理、清晰。
開(kāi)發(fā)人員可以從程序結(jié)構(gòu)模塊化、命名規(guī)則清晰易懂、注釋方法簡(jiǎn)潔明了,文本格式易讀等方面開(kāi)始養(yǎng)成良好習(xí)慣,讓應(yīng)用開(kāi)發(fā)事半功倍,提高程序的執(zhí)行效率。
3、改善程序啟動(dòng)和響應(yīng)的時(shí)間
為了加快App響應(yīng)速度,我們可以在UI線(xiàn)程上創(chuàng)建足夠的對(duì)象,以便完善公共API功能。
然后將功夫用到后臺(tái)線(xiàn)程上,將費(fèi)時(shí)的操作從主線(xiàn)移動(dòng)到一個(gè)單獨(dú)線(xiàn)程中,緩存從磁盤(pán)存儲(chǔ)打開(kāi)和閱讀,客戶(hù)端證書(shū)在后臺(tái)加載。
Cookies反序列化和解碼在后臺(tái),通過(guò)這些改變,UI將更快地出現(xiàn)在屏幕上。
4、使用最新版本的軟件開(kāi)發(fā)SDK、API
隨著Android、ios平臺(tái)的不斷發(fā)展,平臺(tái)提供的功能也在不斷更新,一些功能可能被新功能完全替代。
核心API得到修正版(bug fix)和性能改進(jìn),幫助開(kāi)發(fā)者編寫(xiě)出運(yùn)行更穩(wěn)定、響應(yīng)更迅速的應(yīng)用程序。
5、使用SuperWebView,讓App支持動(dòng)態(tài)更新
已經(jīng)上線(xiàn)的App在需要更新新功能時(shí),可以使用APICloud平臺(tái)的SuperWebView功能,基于SuperWebView開(kāi)發(fā)的功能支持動(dòng)態(tài)更新,可以繞過(guò)應(yīng)用商店的審核,用戶(hù)無(wú)需重新下載App,就能讓新功能悄無(wú)聲息的更新到用戶(hù)手機(jī)上,讓原生App的新功能開(kāi)發(fā)變得更高效。
6、使用Android性能調(diào)優(yōu)利器StrictMode
StrictMode意思為嚴(yán)格模式,是用來(lái)檢測(cè)程序中違例情況的開(kāi)發(fā)者工具,最常用的場(chǎng)景就是檢測(cè)主線(xiàn)程中本地磁盤(pán)和網(wǎng)絡(luò)讀寫(xiě)等耗時(shí)的操作。
使用嚴(yán)格模式,系統(tǒng)檢測(cè)出主線(xiàn)程違例的情況會(huì)做出相應(yīng)的反應(yīng),如日志打印,彈出對(duì)話(huà)框亦或者崩潰等。換言之,嚴(yán)格模式會(huì)將應(yīng)用的違例細(xì)節(jié)暴露給開(kāi)發(fā)者方便優(yōu)化與改善。
7、使用Hierarchy Viewer工具
Hierarchy Viewer可以幫助調(diào)試應(yīng)用布局,它會(huì)讓你選擇設(shè)備或者模擬器上正在運(yùn)行的進(jìn)程,然后顯示其Layout的樹(shù)型結(jié)構(gòu)。
每個(gè)塊上的交通燈分別代表了它在測(cè)量、布置和繪畫(huà)時(shí)的性能,幫你找出瓶頸部分。
8、優(yōu)化應(yīng)用布局
簡(jiǎn)單的屏幕可以讓?xiě)?yīng)用使用輕松流暢,使用Lint工具可以查看View層級(jí)哪些地方可以?xún)?yōu)化。
它可以幫助你找到不必要的控件嵌套以及縮減布局資源的其他方法,以盡量減少資源的使用。
它讓你可以了解哪些布局控件可能是多余的或不必要的。
控件越少、布局層次越淺,性能就越好(具體可查看馬海祥博客《APP用戶(hù)體驗(yàn)開(kāi)發(fā)的10大原則》的相關(guān)介紹)。
9、優(yōu)化應(yīng)用的耗電量
?如果讓用戶(hù)發(fā)現(xiàn)你的應(yīng)用很耗電,那就不怪用戶(hù)馬上卸載應(yīng)用了,應(yīng)用之所以耗電,是因?yàn)槭褂昧耸謾C(jī)的某種資源,根據(jù)谷歌官方統(tǒng)計(jì),典型的耗電場(chǎng)景有調(diào)用GPS定位、網(wǎng)絡(luò)傳輸、屏幕亮度、CPU頻率、內(nèi)存調(diào)度頻度、wake_locker時(shí)間和次數(shù),如果你的應(yīng)用能優(yōu)化以上幾點(diǎn),就能降低耗電風(fēng)險(xiǎn)。
10、規(guī)劃應(yīng)用的離線(xiàn)體驗(yàn)
當(dāng)用戶(hù)無(wú)法連接WiFi或其它網(wǎng)絡(luò)信號(hào)時(shí),用戶(hù)使用App時(shí)仍然能夠有極佳的可用性,那一定能給你的App加不少印象分。
在規(guī)劃App應(yīng)用時(shí),應(yīng)該將這一設(shè)計(jì)方法考慮其中,提前規(guī)劃好App在離線(xiàn)狀態(tài)下的運(yùn)營(yíng)模式。
11、按需加載
按需加載資源或者說(shuō)懶加載資源(特別是圖片)對(duì)優(yōu)化Web App的性能有很大幫助,對(duì)于圖片較多的頁(yè)面,使用懶加載通常有以下三點(diǎn)好處:
(1)、減少并發(fā)請(qǐng)求,緩解服務(wù)器壓力,提高加載速度。
(2)、減少瀏覽器的內(nèi)存占用率。
(3)、降低服務(wù)器的負(fù)載。
圖片或其他資源懶加載的方案一般是,在程序啟動(dòng)時(shí)加載首屏資源,在頁(yè)面滾動(dòng)時(shí)持續(xù)加載即將進(jìn)入視口的資源,由于這種方法往往需要與頁(yè)面結(jié)構(gòu)和開(kāi)發(fā)方式相協(xié)調(diào),所以常常使用現(xiàn)有的插件和擴(kuò)展來(lái)實(shí)現(xiàn)惰性加載(具體可查看馬海祥博客《App界面常用的數(shù)據(jù)加載設(shè)計(jì)和技術(shù)》的相關(guān)介紹)。
一個(gè)典型的按需加載實(shí)例就是谷歌的圖片搜索工具,點(diǎn)擊這一鏈接并滾動(dòng)頁(yè)面,打開(kāi)開(kāi)發(fā)者工具注意資源的加載時(shí)間。
12、緩存
緩存常用來(lái)存儲(chǔ)頻繁調(diào)用的數(shù)據(jù),當(dāng)緩存后的數(shù)據(jù)再次被調(diào)用時(shí),就可以由緩存直接提供數(shù)據(jù),提高數(shù)據(jù)的響應(yīng)速度。
通常來(lái)說(shuō),一個(gè)App都是由多個(gè)組件構(gòu)成的,在這些組件中都能發(fā)現(xiàn)緩存的影子,比如動(dòng)態(tài)內(nèi)容服務(wù)器和客戶(hù)端之間使用的緩存,通過(guò)減少通用請(qǐng)求降低服務(wù)器負(fù)載,可以改善頁(yè)面的響應(yīng)時(shí)間;比如代碼中的緩存處理,可以?xún)?yōu)化某些通用的腳本訪(fǎng)問(wèn)模式。此外,還有數(shù)據(jù)庫(kù)緩存和長(zhǎng)進(jìn)程緩存等。
簡(jiǎn)而言之,緩存是改善應(yīng)用程序響應(yīng)速度和降低CPU負(fù)載的有效方式,在一個(gè)開(kāi)發(fā)體系中,最難的不是如何使用緩存,而是找出哪里適合使用緩存(具體可查看馬海祥博客《交互設(shè)計(jì)的三大隱形機(jī)制:加載、刷新和緩存》的相關(guān)介紹)。
對(duì)于這一問(wèn)題,我還是建議使用事件分析工具(profiler):找出性能瓶頸,檢測(cè)緩存是否成功,測(cè)試緩存是否容易失效……這些問(wèn)題都需要?dú)v經(jīng)實(shí)踐才能得出有效的結(jié)論。
13、性能剖析
性能剖析是應(yīng)用程序進(jìn)行性能優(yōu)化的重要步驟,在馬海祥看來(lái),盲目地優(yōu)化應(yīng)用程序往往會(huì)降低生產(chǎn)力、產(chǎn)生新的痛點(diǎn)且難以維護(hù),性能剖析的作用就是要找出應(yīng)用程序中潛在的風(fēng)險(xiǎn)區(qū)域。
對(duì)Web應(yīng)用程序來(lái)說(shuō),響應(yīng)速度是一個(gè)非常重要的衡量指標(biāo),所以開(kāi)發(fā)者都會(huì)盡可能地去提高資源的加載速度和頁(yè)面的渲染速度。
此外,鄭州網(wǎng)站建設(shè)如果合理分析內(nèi)存的使用率,也將有效提高應(yīng)用程序的性能,如果你的頁(yè)面中有大量的視覺(jué)元素(比如動(dòng)態(tài)的表格)或者大量的交互元素(比如游戲),那么對(duì)內(nèi)存使用的剖析就可以有效減少卡頓,提高幀速。
找出性能的核心痛點(diǎn),才能讓你更加高效地進(jìn)行性能優(yōu)化。
相對(duì)而言,對(duì)后端進(jìn)行性能剖析稍顯困難,一般而言,從最耗時(shí)的請(qǐng)求入手查找相應(yīng)的服務(wù)器是個(gè)不錯(cuò)的方法,這里并沒(méi)有推薦任何有關(guān)后端的性能剖析工具,這是因?yàn)榫唧w的剖析工具要視具體的后端技術(shù)棧而定(具體可查看馬海祥博客《移動(dòng)設(shè)備Web App開(kāi)發(fā)與調(diào)試的相關(guān)知識(shí)要點(diǎn)》的相關(guān)介紹)。
14、負(fù)載均衡
簡(jiǎn)而言之,負(fù)載均衡類(lèi)似于一種輪詢(xún)方案,基于反向代理服務(wù)器nginx或者成熟的分發(fā)網(wǎng)絡(luò),比如Cloudflare和Amazon CloudFront構(gòu)建。
為了實(shí)現(xiàn)負(fù)載均衡,需要將動(dòng)態(tài)內(nèi)容和靜態(tài)內(nèi)容進(jìn)行分離,便于執(zhí)行并行連接。換言之,串行訪(fǎng)問(wèn)削弱了負(fù)載均衡檢索最佳路徑并進(jìn)行分發(fā)的能力。此外,并行加載資源還可以加快應(yīng)用程序的啟動(dòng)速度。
負(fù)載均衡也可以構(gòu)建的很精細(xì),如果數(shù)據(jù)模型不能夠很好地與最終的一致性算法或緩存保持良好的匹配關(guān)系,那么必將導(dǎo)致諸多問(wèn)題,幸運(yùn)的是,大多數(shù)的應(yīng)用程序所請(qǐng)求的數(shù)據(jù)都是一個(gè)縮減集,該縮減集本身具有較高級(jí)別的一致性,鄭州做網(wǎng)站公司如果你的應(yīng)用程序還沒(méi)有具備這樣的能力,那么你需要考慮重構(gòu)它了。
15、算法
在大多數(shù)情況下,鄭州網(wǎng)站制作選擇更高效的算法可以比局部?jī)?yōu)化獲得更佳的收益。
從某種意義上說(shuō),對(duì)CPU和內(nèi)存進(jìn)行性能剖析有助于幫助開(kāi)發(fā)者找出應(yīng)用程序中較大的性能瓶頸,如果這些瓶頸并不是由代碼的錯(cuò)誤引起的,那很有可能就是算法的問(wèn)題。
上一篇: 談SEO優(yōu)化理念之主題模型!
下一篇: 談SEO優(yōu)化理念之主題模型!
Copyright ? 微紅科技 All Rights Reserved
黔公網(wǎng)安備
黔ICP備17001430號(hào)-1
【微紅科技官方微博】
版權(quán)所有:微紅科技
百度統(tǒng)計(jì)