我們都知道,無(wú)論是網(wǎng)頁(yè)還是移動(dòng)應(yīng)用,響應(yīng)速度都是最重要的體驗(yàn)指標(biāo)之一,而移動(dòng)應(yīng)用的網(wǎng)絡(luò)環(huán)境是不穩(wěn)定的,所以速度體驗(yàn)尤為重要。其實(shí)速度優(yōu)化不僅僅是程序員的事,還能讓App更快。
一、軟件的后臺(tái)執(zhí)行
這是一個(gè)非常常見且容易理解的方法。用戶不想盯著進(jìn)度條等,除了“取消”別無(wú)選擇。當(dāng)系統(tǒng)處理一些網(wǎng)絡(luò)任務(wù)時(shí),它可以允許用戶做其他事情。各大平臺(tái)的微博都是后臺(tái)執(zhí)行。云閱讀的離線下載也是在后臺(tái)進(jìn)行的。
而微博的長(zhǎng)圖(或視頻)就是反例。當(dāng)網(wǎng)絡(luò)較弱時(shí),要么等待1分鐘加載圖形,要么放棄圖形。為什么在加載圖形的同時(shí)用戶不能看其他微博?
其次,可以在加載之前顯示內(nèi)容
客戶端和web的一個(gè)區(qū)別是客戶端的顯示內(nèi)容包括本地?cái)?shù)據(jù)和網(wǎng)絡(luò)數(shù)據(jù)。在設(shè)計(jì)界面時(shí),更多的信息放在本地,網(wǎng)絡(luò)數(shù)據(jù)沒有加載時(shí)顯示本地?cái)?shù)據(jù),給用戶的感覺是加載了一半。即使最后的時(shí)間一樣,心理感受也會(huì)更快。當(dāng)然,在本地寫太多數(shù)據(jù)會(huì)犧牲一些靈活性,需要根據(jù)具體情況考慮。一些優(yōu)秀產(chǎn)品的啟動(dòng)圖片雖然是靜態(tài)圖片,但卻假裝沒有使用LOGO就加載到了“導(dǎo)航條”和“標(biāo)題欄”,讓人感覺“點(diǎn)擊后立即啟動(dòng)”。
第三,充分利用緩存
緩存可以將網(wǎng)絡(luò)數(shù)據(jù)存儲(chǔ)在本地,下次打開時(shí)不需要再次請(qǐng)求網(wǎng)絡(luò),減少了流量和等待時(shí)間。設(shè)計(jì)上可以先顯示緩存內(nèi)容,后臺(tái)從網(wǎng)絡(luò)拉新內(nèi)容。如果有新的內(nèi)容,可以立即更換或在下次訪問時(shí)更換。但是在使用緩存的時(shí)候要注意“度”。太大的緩存文件占用太多系統(tǒng)空間,會(huì)讓用戶一怒之下卸載App。
第四,界面可以繼續(xù)
對(duì)于一些數(shù)據(jù)量小、失敗概率低的網(wǎng)絡(luò)交互,用戶不需要清楚地知道App在做什么,可以流暢地使用App,所以要“掩蓋一些事實(shí)”,即在界面上乖乖地快速完成任務(wù)(心智模型),在程序后臺(tái)繼續(xù)默默執(zhí)行任務(wù)(實(shí)現(xiàn)模型)。最常用的聊天界面是QQ、微信、電子郵件。點(diǎn)擊發(fā)送后,消息立即“飛入”聊天上下文,但對(duì)方尚未收到。但這種設(shè)計(jì)使得溝通過程更加順暢,沒有“發(fā)送——發(fā)送成功”各種流程的干擾。用戶在收集文章、關(guān)注好友等操作時(shí),數(shù)據(jù)量很小,界面可以進(jìn)行下去。在用戶繼續(xù)瀏覽文章的同時(shí),系統(tǒng)會(huì)很好的收集文章。經(jīng)常使用的另一種類似于這種思路的方法是:在沒有網(wǎng)絡(luò)的情況下,用戶進(jìn)行操作(比如寫評(píng)論和筆記等)。),本地保存用戶輸入,有網(wǎng)絡(luò)再上傳。讓用戶有連貫的體驗(yàn)。
V .預(yù)測(cè)用戶行為,提前開始任務(wù)
不知道你有沒有使用淘寶的習(xí)慣。在搜索結(jié)果列表中,將所有感興趣的結(jié)果作為新標(biāo)簽頁(yè)打開,然后逐一查看,不感興趣的關(guān)閉。這樣做的好處是我在瀏覽產(chǎn)品詳情頁(yè)面的時(shí)候,每個(gè)頁(yè)面都是完全加載的,否則我會(huì)點(diǎn)擊一個(gè)頁(yè)面看到一個(gè),每個(gè)頁(yè)面都要等待加載,效率會(huì)大大降低。那么可以設(shè)計(jì)成滿足類似的使用場(chǎng)景嗎?應(yīng)該可以預(yù)測(cè)用戶的行為,提前啟動(dòng)任務(wù)。
策略類似這樣:用戶在某個(gè)界面停留的時(shí)候,預(yù)測(cè)下一步可能做ABC三個(gè)任務(wù),系統(tǒng)于是把這些任務(wù)都提前做完。當(dāng)用戶做出選擇比如A時(shí),界面可以迅速響應(yīng),并且同時(shí)把BC兩個(gè)任務(wù)從內(nèi)存中清空掉以節(jié)省資源。(當(dāng)然這招也有限制:1,只適用于免費(fèi)的網(wǎng)絡(luò)。2,預(yù)加載不能影響系統(tǒng)的性能)我們就回來(lái)看淘寶的iPad客戶端。它有這樣的設(shè)計(jì),在某詳情頁(yè)查看時(shí),向右一劃可以查看下一個(gè)商品,也許這是一個(gè)好設(shè)計(jì),但是卻沒有幫我預(yù)加載下一個(gè)界面,我還是不得不傻傻地等頁(yè)面加載完。
然后我們?cè)賮?lái)看一些其他的設(shè)計(jì)。比如網(wǎng)易云閱讀,我們認(rèn)為用戶進(jìn)入一個(gè)信息源最大的可能性之一就是刷新和查看新內(nèi)容。因此,即使沒有打開自動(dòng)刷新選項(xiàng),也會(huì)制作源列表,在后臺(tái)自動(dòng)加載新內(nèi)容,并在刷新按鈕上顯示“新建”。此時(shí),當(dāng)用戶再次刷新時(shí),內(nèi)容立即呈現(xiàn)。比如我們的Android更新提醒在安裝包自動(dòng)下載后提示,讓用戶不再需要等待下載過程。再比如查看云讀大圖,自動(dòng)加載下一張;當(dāng)?shù)竭_(dá)底部時(shí),TableView將自動(dòng)加載,等等。如果下載前問是否保存,可以在用戶決定的時(shí)候開始下載,節(jié)省了很多時(shí)間。如果用戶放棄,下載的內(nèi)容會(huì)自動(dòng)刪除。所以,用這個(gè)思路。插入微博后可以自動(dòng)上傳照片,而不是等用戶點(diǎn)擊“發(fā)送”嗎?當(dāng)你看一個(gè)微博,定位一個(gè)微博,應(yīng)該自動(dòng)加載大圖還是大視頻?音樂應(yīng)用是否應(yīng)該在當(dāng)前歌曲快結(jié)束的時(shí)候下載下一首歌,這樣在剪輯歌曲的時(shí)候就不會(huì)卡一會(huì)兒了?
VI .使用動(dòng)態(tài)效果覆蓋加載過程
優(yōu)秀的動(dòng)態(tài)設(shè)計(jì),讓產(chǎn)品更好用,讓人眼前一亮。其實(shí)動(dòng)態(tài)效果還有一個(gè)很大的用處,就是吸引用戶的注意力,把等待載入的枯燥過程變成一個(gè)愉悅欣賞的過程。