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