前些天,在天天問(wèn)里面看到有個(gè)關(guān)于如何設(shè)計(jì)“清理緩存”的功能,然后思考了一下的確很多APP上都有清理緩存的功能,但是也有少部分APP上沒(méi)有清理緩存的功能,那么問(wèn)題來(lái)了,緩存是什么?有什么價(jià)值?又要如何設(shè)計(jì)清理緩存功能呢?于是乎,就有了今天的這篇文章。
一、什么是緩存?
緩存就是數(shù)據(jù)交換的緩沖區(qū),當(dāng)某一硬件要讀取數(shù)據(jù)時(shí),會(huì)首先從緩存中查找需要的數(shù)據(jù),如果找到了則直接執(zhí)行,找不到的話(huà)則從內(nèi)存中找。由于緩存的運(yùn)行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運(yùn)行。簡(jiǎn)單的理解就是把用戶(hù)訪(fǎng)問(wèn)的數(shù)據(jù)存在本地,當(dāng)用戶(hù)在某些情況下需要使用時(shí),直接在本地調(diào)取緩存的數(shù)據(jù),這樣效率較高。
二、有哪些APP緩存方式?按需緩存,是把從服務(wù)器獲取的內(nèi)容以某種格式存放在本地文件系統(tǒng),之后對(duì)于每次請(qǐng)求,檢查緩存中是否存在這塊數(shù)據(jù),只有當(dāng)數(shù)據(jù)不存在(或者過(guò)期)的情況下才從服務(wù)器獲取。這樣的話(huà),獲取數(shù)據(jù)的效率就明顯提高了。預(yù)緩存,是把內(nèi)容放在本地以備將來(lái)訪(fǎng)問(wèn),另外就是在本地緩存無(wú)需重新連接服務(wù)器時(shí)可被編輯。編輯可能是用戶(hù)進(jìn)行“標(biāo)記記錄為已讀”或“加入收藏”,或其他類(lèi)似的操作。三、為什么要有緩存?
緩存的目的主要是提高APP的性能和離線(xiàn)訪(fǎng)問(wèn)數(shù)據(jù),那么對(duì)于用戶(hù)來(lái)說(shuō)有哪些價(jià)值?
A場(chǎng)景
用戶(hù)首次打開(kāi)資訊類(lèi)APP首頁(yè),loading了5秒鐘首頁(yè)資訊信息才全部展現(xiàn)出來(lái),然后點(diǎn)擊某一條資訊,瀏覽該咨詢(xún)的詳細(xì)信息,瀏覽完再返還到首頁(yè)瀏覽其他資訊,這時(shí)候首頁(yè)加載多久才能顯示出所有資訊信息?如果還是要loading5秒鐘的話(huà),那么用戶(hù)反復(fù)的進(jìn)入下一頁(yè)和返還首頁(yè)的過(guò)程中,會(huì)明顯感覺(jué)到首頁(yè)總是在loading,從而消耗了用戶(hù)時(shí)間,也降低了用戶(hù)體驗(yàn)。
緩存價(jià)值:提高APP性能和頁(yè)面加載效率,第一次將頁(yè)面資訊信息進(jìn)行緩存到本地,后續(xù)在未刷新情況下直接調(diào)用本地?cái)?shù)據(jù)而不是訪(fǎng)問(wèn)服務(wù)器數(shù)據(jù),來(lái)提高數(shù)據(jù)獲取的效率。
B場(chǎng)景
用戶(hù)在有網(wǎng)絡(luò)的情況下,使用閱讀類(lèi)APP點(diǎn)擊查看了一本小說(shuō),而后出門(mén)在地鐵上無(wú)聊想看這本小說(shuō),但這時(shí)候地鐵內(nèi)無(wú)信號(hào),如果僅僅因?yàn)闆](méi)有信號(hào)的原因,用戶(hù)打開(kāi)APP映入眼簾的就是帶有網(wǎng)絡(luò)異常的警示頁(yè)和他無(wú)法閱讀之前中意的小說(shuō)的結(jié)局嗎?
緩存價(jià)值:支持離線(xiàn)訪(fǎng)問(wèn),用戶(hù)在APP離線(xiàn)無(wú)網(wǎng)絡(luò)的情況下,仍可以閱讀之前緩存到本地的小說(shuō)內(nèi)容,即解決用戶(hù)離線(xiàn)訪(fǎng)問(wèn)的需求,又提高了離線(xiàn)情況下APP的視覺(jué)友好度。
C場(chǎng)景
用戶(hù)在使用社交APP時(shí),因?yàn)橥饨缫蛩貙?dǎo)致長(zhǎng)時(shí)間處于無(wú)網(wǎng)絡(luò)的情況下,這時(shí)候他想刪除某一條聊天記錄,或者是收藏一篇美文,亦或者是給好友的動(dòng)態(tài)進(jìn)行點(diǎn)贊。那結(jié)果會(huì)是因?yàn)锳PP離線(xiàn)的情況下,用戶(hù)無(wú)法進(jìn)行以上的操作嘛?
緩存價(jià)值:支持用戶(hù)離線(xiàn)操作,對(duì)于將之前用戶(hù)瀏覽的信息緩存到本地后,用戶(hù)仍可在離線(xiàn)狀態(tài)下,對(duì)信息進(jìn)行輔助性操作,比如點(diǎn)贊、收藏、標(biāo)記等。這樣能提高用戶(hù)的滿(mǎn)意度。
D場(chǎng)景
用戶(hù)使用短視頻APP查看了一部20M的短視頻,花費(fèi)了20M流量。當(dāng)用戶(hù)觀(guān)看完就關(guān)閉APP了。那么當(dāng)用戶(hù)覺(jué)得之前觀(guān)看的短視頻很精彩,想再次觀(guān)看這部短視頻的時(shí)候,還需要花費(fèi)20M流量嗎?
緩存價(jià)值:減少用戶(hù)流量損耗,當(dāng)用戶(hù)第一次觀(guān)看短視頻時(shí),已經(jīng)花費(fèi)一定的流量將其緩存到本地,后續(xù)還需要觀(guān)看此短視頻,則無(wú)需花費(fèi)流量來(lái)從服務(wù)器端獲取此短視頻,可直接在0流量情況(等同于離線(xiàn))下直接觀(guān)看此短視頻。
四、如何設(shè)計(jì)清理緩存功能?
上述主要介紹假設(shè)的四種用戶(hù)場(chǎng)景及對(duì)應(yīng)體現(xiàn)出的緩存價(jià)值,可以肯定的是APP的緩存功能是有一定的必要性。那么手機(jī)緩存只有優(yōu)點(diǎn)沒(méi)有缺點(diǎn)嘛?答案顯而易見(jiàn)是NO。毋容置疑的是APP的緩存會(huì)一定程度上影響到用戶(hù)手機(jī)的儲(chǔ)存空間,所以需要設(shè)計(jì)一個(gè)清理緩存的功能,以便于用戶(hù)有效的使用被釋放的存儲(chǔ)空間。那么接下來(lái)談?wù)撊绾蝸?lái)設(shè)計(jì)清理緩存功能呢?
是否需要用戶(hù)清理緩存
1、不需要
不需要用戶(hù)清理理APP緩存的前提是,此APP不會(huì)占用用戶(hù)手機(jī)過(guò)多的存儲(chǔ)空間,這時(shí)候就不需要用戶(hù)自己來(lái)清理緩存了,可以通過(guò)系統(tǒng)自動(dòng)來(lái)清理APP緩存。自動(dòng)清理緩存的兩個(gè)要素:設(shè)置緩存的上限、設(shè)置清理緩存的頻率。
2、需要
多數(shù)常見(jiàn)于IM類(lèi)、電商類(lèi)、資訊類(lèi)、閱讀類(lèi)、視頻類(lèi)等APP需要單獨(dú)設(shè)置清理緩存的功能,因?yàn)檫@類(lèi)APP會(huì)因?yàn)橛脩?hù)頻繁的使用緩存較多的數(shù)據(jù)在本地,可能會(huì)占用手機(jī)較多的儲(chǔ)存空間,這類(lèi)APP會(huì)把是否清理緩存的權(quán)限交由用戶(hù)自己決定。(另外還有少部分APP,用戶(hù)可自定義設(shè)置緩存的上限,這樣用戶(hù)不僅有清理緩存的權(quán)限,還有設(shè)置緩存上限的權(quán)限。比如網(wǎng)易云音樂(lè),用戶(hù)可勾選緩存的上限值是多少,按理超過(guò)的上限的緩存是不被存放到本地來(lái)占用手機(jī)儲(chǔ)存空間的,一旦達(dá)到緩存上限時(shí),APP是不會(huì)進(jìn)行超過(guò)緩存上限的提醒,主要是為了不干擾用戶(hù)正常操作。)
用戶(hù)清除緩存的細(xì)節(jié)
1、顯示緩存大小
這是最基本、也是不能忽略的一點(diǎn)就是顯示緩存的大小,以便于用戶(hù)根據(jù)緩存大小來(lái)判斷是否要清理這些緩存。
2、顯示當(dāng)前APP緩存占用手機(jī)儲(chǔ)存空間的比例
顯示當(dāng)前緩存占用手機(jī)存儲(chǔ)空間的比例,以及可用的手機(jī)儲(chǔ)存空間有多大,為用戶(hù)選擇是否清理緩存提供了兩種方式的比較,提高用戶(hù)清理緩存的參考度。
3、顯示緩存分類(lèi)
將APP緩存進(jìn)行分類(lèi),一般分類(lèi)有兩種維度,一種是時(shí)間維度,另外一種是內(nèi)容維度。
(1)時(shí)間維度
主要是可清理某一時(shí)間段的手機(jī)緩存。比如飛豬顯示3天之內(nèi)、3~7天、7天之外各階段緩存大小,用戶(hù)可自由選擇清理哪一時(shí)間段或多個(gè)時(shí)間段的緩存。這樣在用戶(hù)手機(jī)儲(chǔ)存空間不足,但又不想清理最近使用APP留下的緩存情況下,給用戶(hù)提供了一個(gè)不錯(cuò)的選擇。
(2)內(nèi)容維度
按照緩存內(nèi)容進(jìn)行分類(lèi)顯示緩存大小并支持單獨(dú)清理某一類(lèi)緩存。比如same緩存分為清除圖片緩存、清除語(yǔ)音緩存、清除數(shù)據(jù)緩存、草稿文件緩存、貼紙圖片緩存及各自緩存大小,這樣當(dāng)用戶(hù)需要在APP緩存和手機(jī)儲(chǔ)存空間之間進(jìn)行權(quán)衡時(shí),可選擇對(duì)用戶(hù)損害最小的一類(lèi)緩存進(jìn)行清除。這不僅能滿(mǎn)足用戶(hù)釋放手機(jī)儲(chǔ)存空間的需求,又提高了用戶(hù)體驗(yàn)。
4、清理緩存的交互顯示
(1)是否需要清理緩存
當(dāng)用戶(hù)點(diǎn)擊進(jìn)行緩存清理時(shí),彈出彈框提示用戶(hù)是否需要清理,一方面告知用戶(hù)清理緩存需要一定的時(shí)間,減少等到緩存被清理過(guò)程中的焦慮感;另外一方面,避免用戶(hù)手誤錯(cuò)點(diǎn)到清理緩存,使得用戶(hù)能慎重決定。
(2)緩存是否成功清理
當(dāng)系統(tǒng)清理完緩存時(shí),希望用戶(hù)能得到緩存是否清理成功的反饋,可以是緩存大小變?yōu)?,也可以是一句“緩存清理成功”。
五、總結(jié)
最后,至于大家如何設(shè)計(jì)各自APP清理緩存的功能,那就需要大家考慮各自APP所屬類(lèi)型,不同類(lèi)型的APP清理緩存的側(cè)重點(diǎn)和復(fù)雜度也不同,若是低頻率且緩存較小的APP可考慮系統(tǒng)自動(dòng)清理緩存,而不用花費(fèi)精力設(shè)計(jì)獨(dú)立清理緩存的功能供用戶(hù)操作;另外就是考慮目前產(chǎn)品所屬階段,如果是產(chǎn)品上線(xiàn)初期,應(yīng)該把精力花在強(qiáng)需求、高頻次的功能上,而不是低頻率的清理緩存上。
以上種種只是我的個(gè)人想法,大家有沒(méi)有什么更好的想法呢?歡迎來(lái)一起思考討論。
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!