Akamai開發者布道師   Aman Alam

如今,手機和各類移動端應用現已經成為人們日常生活的重要組成部分。因此,應用的數量不斷飆升(如今已上線的安卓應用至少達到210萬)。對於安卓開發商,在應用領域競爭日益激烈的背景下,打造可以使終端用戶滿意的應用正變得空前重要。

作為安卓應用開發商的您知道使應用終端用戶滿意的關鍵是什麼嗎?答案是高性能。實際上,96%的終端用戶都認為應用的性能非常重要。下面,我們將討論能夠使終端用戶獲得滿意的用戶體驗的五種方式。

在進入正題前,我想先介紹一下高性能的定義以及它為何在使終端用戶獲得滿意的用戶體驗方面至關重要。

高性能的安卓應用能夠合理地使用設備資源,幫助終端用戶迅速實現目標任務。實際上,高性能應用還可縮短終端用戶體驗到的感知延遲。

在這裡,感知延遲是一個重要術語:它是指終端用戶所體驗的從點擊按鈕到界面發生變化這段時間內的時間差。根據終端用戶所採取行動和數據獲取來源的不同,我們可以有很多種方法來縮短感知延遲。

現在,讓我們來分析一下終端用戶互動和數據載入的五種情景,探討作為安卓應用開發商的您能夠採取何種方式來縮短感知延遲,並讓應用對終端用戶需求做出迅速且貼心的響應。

1、從最近的資源載入

您所開發的安卓應用的終端用戶遍佈全球,並且毫無疑問,這些用戶越來越依賴移動化的生活方式。

您的終端用戶和向應用提供數據的網路伺服器之間的距離難以保證始終處於掌控之中,而這也正是延遲變長的主要原因。

為了減少感知延遲,您應盡可能從距離較近的的資源向應用提供大部分的數據;此外,許多未授權的API請求可在最近資源被清除,這樣就可以避免與後端伺服器之間的往返傳輸,進而提高了對終端用戶需求的響應速度。

Akamai智慧邊緣平臺可提供開箱即用的服務。借助Akamai,您可以讓數據總是從最優化的資源載入,這樣就可以提高應用的性能,您的終端用戶也可以輕易地獲取數據內容。

2、暫存和預取

許多從網路伺服器載入的資源常常都在不斷地進行重復使用。智慧暫存機制可以將對象或API響應存儲一段時間,以供重復使用,從而縮短冗長的來回傳輸時間。許多網路或圖像載入數據庫已經可以提供這種功能,您可以根據需要進行配置。這些暫存對象能夠暫態載入,因此延遲時間很短,終端用戶根本不會察覺到有任何滯後。

有了這些數據庫,當暫存內容過期時,會對其進行標記,以便從網路中重新載入。根據這些資訊,您可以為數據庫設定保存再利用暫存對象的時間。許多這樣的數據庫也支援HTTP報文頭,比如max-age等。這可以幫助您在無需加速應用更新的情況下控制暫存能力以及直接從伺服器載入的暫存內容的生命週期。

然而,在例如提供直播體育賽事比分的應用等一些情況下,暫存可能並不適用。對於此類應用,作為安卓應用開發商的您可以繼續從網路載入數據。如果您從最近的資源載入數據(請見上文),對於提升應用性能的作用並不顯著。

在某些情況下,您可能知道終端用戶下一步將要做些什麼。例如,電子書閱讀應用可以預知,當終端用戶正在讀一本書的某一頁時,他們可能會向前或向後翻。基於這種認知,該應用可以提前預取幾頁然後進行暫存。這樣,當終端用戶翻到這幾頁時,頁面就可以暫態載入。

類似的,在電商應用中,如果終端用戶瀏覽到第四行的商品,他們有可能也會翻看下一頁的商品。如果應用能預取下一頁內容並進行暫存,那麼當終端用戶翻到下一頁時,數據就可以暫態載入。

正如您看到的這樣,您可以使用多種方式預取並暫存數據,以此降低感知延遲,從而提高終端用戶的使用的滿意度。

3、迅速載入API的響應速度

應用頻繁使用API。如果API響應能迅速載入,那麼終端用戶不必耗費太多等待時間,而將更多時間用於使用應用上。

為此,您作為安卓應用開發商需確保有盡可能多的應用從盡可能近的資源(即:網路邊緣,請見上文)中載入。這樣,只有那些必須訪問源伺服器的API請求,才需要經歷可能長達半個地球距離的漫長“旅程”。

另一種方法是縮減應用和後端伺服器之間傳輸的數據大小,以此加快API響應速度。為此,您可以探索Colfer或谷歌的協議緩衝(也稱為Protobuf)等數據格式,而不是JSON。在將數據傳至網路之前需將數據轉化為二進位,與JSON相比,這種格式可大幅縮減API請求/響應的字節長度。值得注意的是,為了啟動與Protobuf的協作,您的網路伺服器和應用都需要額外的投入;不過,在許多情況下,採用Protobuf獲得的性能提升遠超過啟動它所需做出的努力。

迅速載入API的響應速度、優化感知延遲的第三種方法是暫存或預取可預測且重復的API響應。在暫存時,作為安卓應用開發商的您可將API響應存儲至本地數據庫表中,這樣讀取速度就能比從網路中讀取的速度更快。這個本地數據庫可根據自己的邏輯加以清空或刷新,不過,從本地數據庫載入,然後再刷新的過程有助於實現最佳性能及最短的感知延遲。

4、優化圖像和視頻

除了API之外,終端用戶還可能需要載入很多的圖像和視頻。一般來説,應用載入的圖像也可在同一應用的網站等其他地方使用。

與移動端應用相比,使用電腦打開的網站圖像對螢幕大小、解析度和設備類型的要求有所不同。很重要的一點是,應用上的圖像需要根據資源有限的移動設備進行優化。移動端應用上的視頻亦是如此。

即便當這些媒體從最近的資源載入數據,它們也可能達不到最快的速度;因此,作為應用供應商,您還需要確定圖像和視頻是否得到了優化。這些對象的絕對大小以及全球移動數據網路的不可預測性很容易抵消您僅用就近伺服器就能實現降低延遲的優勢。

為了實現這種優化,需要確保移動端應用具有最合適的解析度和大小,以便載入圖像或視頻。如果這些設備太大,那麼下載就會花費很長時間;如果它們太小,那麼在螢幕上則會顯示馬賽克。

Akamai圖像管理器(Akamai Image Manager)是一種可以幫助安卓應用開發商利用單一的高品質原圖對諸多移動設備進行自動優化的解決方案。這種優化也可使圖像和視頻的暫存變得更加容易。如果設備類型數量有限,您也可以存儲同一張圖像的多份不同副本。

圖像常常包括很多不常用於應用中的EXIF數據(例如,拍照時設置相機細節)。Akamai Image Manager可對此進行自動優化,不過您也可以利用tinypng等服務手工清除這些數據。這種優化可以縮小圖像文件的大小,從而縮短載入時間。

另一種優化方式是利用漸進圖像和自適應視頻流。借助這種優化,終端安卓應用就無需等待整張圖像下載;應用可逐步地下載這些圖像,並在其下載時就開始顯示。這可避免終端用戶進入空白圖像視圖,同時縮短感知延遲。類似的,自適應視頻緩衝技術可根據網路條件動態地調整視頻品質。當頻寬較小時,它可調低視頻解析度,以便終端用戶能看到部分視頻,而不是僅看到正在載入中的螢幕。

除了PNG和JPEG圖像,您也可以嘗試WebP格式。雖然創建WebP格式的圖像需要花費更多時間,但載入時卻更加高效。在本地或網路載入過程中,嘗試SVG圖像是另一種節省磁片空間的有效方法。

5、優化本地動畫和過渡

動畫在幫助終端用戶獲得滿意的用戶體驗、以及告知用戶活動方面起著重要的作用。與性能相比,動畫與感知延遲有著更明顯的關係。

過長的動畫載入時間會使終端用戶感到煩躁和無趣;太短或卡頓的動畫會讓終端用戶難以理解內容的含義。兩種情況都會給您的終端用戶留下不好的體驗。電池耗量也是設計精良的動畫必須考慮的一個方面,動畫在提供愉悅的用戶體驗的同時,還需要做到消耗盡可能少的資源。

根據Material Design guidelines by Google,移動設備上較長的動畫的長度為300-400毫秒,較短的動畫為150-200毫秒。比這些更長或更短的動畫可能會讓人感覺有滯後或是難以跟上。Material Design guidelines on motion是通過例子了解這些時間範圍的好選擇。

所以,為了讓終端用戶更好地理解短動畫的內容,動畫的持續時間應在150-200毫秒之間。類似的,任何過渡輔助(比如從一個螢幕轉到另一個螢幕)都不應長于400毫秒。傾向於重復的動畫(比如進度條)應遵循類似的原則。單段動畫的長度可以在300-400毫秒之間,這樣它就可以在進度條退出前進行迴圈。

如果您想了解更多關於人類感知動作的資訊,請閱讀名為Human Processor Model的研究。

結論

高性能的關鍵是綜合考慮數據細節並謹慎地利用資源。幸運的是,我們有很多種方式來實現這個目標。

除了上述五大秘訣之外,我還想向安卓應用開發商強烈推薦另外兩種資源——The Art of Computer Programming和Introduction to Algorithms,它們可以幫助您遵循最佳編碼實踐並利用最高效的演算法,打造高性能的安卓應用,使終端用戶獲得滿意的用戶體驗。

關於Akamai

Akamai為全球最大型公司提供安全的數字化體驗。Akamai的智慧邊緣平臺涵蓋了從企業到雲端的一切,從而確保客戶及其公司獲得快速、智慧且安全的體驗。全球頂尖品牌依賴Akamai通過靈活的解決方案擴大多雲架構的功能,幫助其獲得競爭優勢。Akamai的決策、應用和體驗比任何競爭對手都更為貼近用戶,並使用戶遠離攻擊和威脅。Akamai提供涵蓋邊緣安全、Web和移動性能、企業訪問和視頻交付解決方案的産品組合,並且通過無與倫比的客戶服務、分析及全天候監控提供支援。

責任編輯:林梅