華文網

問答思考:如何設計APP清理緩存功能?

前些天,在天天問裡面看到有個關於如何設計“清理緩存”的功能,然後思考了一下的確很多APP上都有清理緩存的功能,但是也有少部分APP上沒有清理緩存的功能,那麼問題來了,

緩存是什麼?有什麼價值?又要如何設計清理緩存功能呢?於是乎,就有了今天的這篇文章。

一、什麼是緩存?

緩存就是資料交換的緩衝區,當某一硬體要讀取資料時,會首先從緩存中查找需要的資料,如果找到了則直接執行,找不到的話則從記憶體中找。

由於緩存的運行速度比記憶體快得多,故緩存的作用就是説明硬體更快地運行。簡單的理解就是把使用者訪問的資料存在本地,當使用者在某些情況下需要使用時,直接在本地調取緩存的資料,這樣效率較高。

二、有哪些APP緩存方式?按需緩存,是把從伺服器獲取的內容以某種格式存放在本地檔案系統,之後對於每次請求,檢查緩存中是否存在這塊資料,只有當資料不存在(或者過期)的情況下才從伺服器獲取。

這樣的話,獲取資料的效率就明顯提高了。預緩存,是把內容放在本地以備將來訪問,另外就是在本地緩存無需重新連接伺服器時可被編輯。編輯可能是使用者進行“標記記錄為已讀”或“加入收藏”,或其他類似的操作。

三、為什麼要有緩存?

緩存的目的主要是提高APP的性能和離線訪問資料,那麼對於使用者來說有哪些價值?

A場景

用戶首次打開資訊類APP首頁,

loading了5秒鐘首頁資訊資訊才全部展現出來,然後點擊某一條資訊,流覽該諮詢的詳細資訊,流覽完再返還到首頁流覽其他資訊,這時候首頁載入多久才能顯示出所有資訊資訊?如果還是要loading5秒鐘的話,那麼用戶反復的進入下一頁和返還首頁的過程中,會明顯感覺到首頁總是在loading,從而消耗了用戶時間,也降低了用戶體驗。

緩存價值:提高APP性能和頁面載入效率,

第一次將頁面資訊資訊進行緩存到本地,後續在未刷新情況下直接調用本地資料而不是訪問伺服器資料,來提高資料獲取的效率。

B場景

使用者在有網路的情況下,使用閱讀類APP點擊查看了一本小說,而後出門在地鐵上無聊想看這本小說,但這時候地鐵內無信號,如果僅僅因為沒有信號的原因,使用者打開APP映入眼簾的就是帶有網路異常的警示頁和他無法閱讀之前中意的小說的結局嗎?

緩存價值:支援離線訪問,用戶在APP離線無網路的情況下,仍可以閱讀之前緩存到本地的小說內容,即解決使用者離線訪問的需求,又提高了離線情況下APP的視覺友好度。

C場景

用戶在使用社交APP時,因為外界因素導致長時間處於無網路的情況下,這時候他想刪除某一條聊天記錄,或者是收藏一篇美文,亦或者是給好友的動態進行點贊。那結果會是因為APP離線的情況下,使用者無法進行以上的操作嘛?

緩存價值:支援用戶離線操作,對於將之前使用者流覽的資訊緩存到本地後,用戶仍可在離線狀態下,對資訊進行輔助性操作,比如點贊、收藏、標記等。這樣能提高用戶的滿意度。

D場景

使用者使用短視頻APP查看了一部20M的短視頻,花費了20M流量。當用戶觀看完就關閉APP了。那麼當使用者覺得之前觀看的短視頻很精彩,想再次觀看這部短視頻的時候,還需要花費20M流量嗎?

緩存價值:減少使用者流量損耗,當使用者第一次觀看短視頻時,已經花費一定的流量將其緩存到本地,後續還需要觀看此短視頻,則無需花費流量來從伺服器端獲取此短視頻,可直接在0流量情況(等同於離線)下直接觀看此短視頻。

四、如何設計清理緩存功能?

上述主要介紹假設的四種用戶場景及對應體現出的緩存價值,可以肯定的是APP的緩存功能是有一定的必要性。那麼手機緩存只有優點沒有缺點嘛?答案顯而易見是NO。毋容置疑的是APP的緩存會一定程度上影響到使用者手機的儲存空間,所以需要設計一個清理緩存的功能,以便於用戶有效的使用被釋放的存儲空間。那麼接下來談論如何來設計清理緩存功能呢?

是否需要使用者清理緩存

1、不需要

不需要使用者清理理APP緩存的前提是,此APP不會佔用使用者手機過多的存儲空間,這時候就不需要使用者自己來清理緩存了,可以通過系統自動來清理APP緩存。自動清理緩存的兩個要素:設置緩存的上限、設置清理緩存的頻率。

2、需要

多數常見於IM類、電商類、資訊類、閱讀類、視頻類等APP需要單獨設置清理緩存的功能,因為這類APP會因為用戶頻繁的使用緩存較多的資料在本地,可能會佔用手機較多的儲存空間,這類APP會把是否清理緩存的許可權交由用戶自己決定。(另外還有少部分APP,使用者可自訂設置緩存的上限,這樣用戶不僅有清理緩存的許可權,還有設置緩存上限的許可權。比如網易雲音樂,使用者可勾選緩存的上限值是多少,按理超過的上限的緩存是不被存放到本地來佔用手機儲存空間的,一旦達到緩存上限時,APP是不會進行超過緩存上限的提醒,主要是為了不干擾用戶正常操作。)

用戶清除緩存的細節

1、顯示緩存大小

這是最基本、也是不能忽略的一點就是顯示緩存的大小,以便於使用者根據緩存大小來判斷是否要清理這些緩存。

2、顯示當前APP緩存佔用手機儲存空間的比例

顯示當前緩存佔用手機存儲空間的比例,以及可用的手機儲存空間有多大,為用戶選擇是否清理緩存提供了兩種方式的比較,提高使用者清理緩存的參考度。

3、顯示緩存分類

將APP緩存進行分類,一般分類有兩種維度,一種是時間維度,另外一種是內容維度。

(1)時間維度

主要是可清理某一時間段的手機緩存。比如飛豬顯示3天之內、3~7天、7天之外各階段緩存大小,用戶可自由選擇清理哪一時間段或多個時間段的緩存。這樣在使用者手機儲存空間不足,但又不想清理最近使用APP留下的緩存情況下,給使用者提供了一個不錯的選擇。

(2)內容維度

按照緩存內容進行分類顯示緩存大小並支援單獨清理某一類緩存。比如same緩存分為清除圖片緩存、清除語音緩存、清除資料緩存、草稿檔緩存、貼紙圖片緩存及各自緩存大小,這樣當使用者需要在APP緩存和手機儲存空間之間進行權衡時,可選擇對用戶損害最小的一類緩存進行清除。這不僅能滿足使用者釋放手機儲存空間的需求,又提高了用戶體驗。

4、清理緩存的交互顯示

(1)是否需要清理緩存

當用戶點擊進行緩存清理時,彈出彈框提示使用者是否需要清理,一方面告知使用者清理緩存需要一定的時間,減少等到緩存被清理過程中的焦慮感;另外一方面,避免用戶手誤錯點到清理緩存,使得用戶能慎重決定。

(2)緩存是否成功清理

當系統清理完緩存時,希望用戶能得到緩存是否清理成功的回饋,可以是緩存大小變為0,也可以是一句“緩存清理成功”。

五、總結

最後,至於大家如何設計各自APP清理緩存的功能,那就需要大家考慮各自APP所屬類型,不同類型的APP清理緩存的側重點和複雜度也不同,若是低頻率且緩存較小的APP可考慮系統自動清理緩存,而不用花費精力設計獨立清理緩存的功能供用戶操作;另外就是考慮目前產品所屬階段,如果是產品上線初期,應該把精力花在強需求、高頻次的功能上,而不是低頻率的清理緩存上。

以上種種只是我的個人想法,大家有沒有什麼更好的想法呢?歡迎來一起思考討論。

本文由 @董小白 原創發佈于人人都是產品經理。未經許可,禁止轉載。

使用者無法進行以上的操作嘛?

緩存價值:支援用戶離線操作,對於將之前使用者流覽的資訊緩存到本地後,用戶仍可在離線狀態下,對資訊進行輔助性操作,比如點贊、收藏、標記等。這樣能提高用戶的滿意度。

D場景

使用者使用短視頻APP查看了一部20M的短視頻,花費了20M流量。當用戶觀看完就關閉APP了。那麼當使用者覺得之前觀看的短視頻很精彩,想再次觀看這部短視頻的時候,還需要花費20M流量嗎?

緩存價值:減少使用者流量損耗,當使用者第一次觀看短視頻時,已經花費一定的流量將其緩存到本地,後續還需要觀看此短視頻,則無需花費流量來從伺服器端獲取此短視頻,可直接在0流量情況(等同於離線)下直接觀看此短視頻。

四、如何設計清理緩存功能?

上述主要介紹假設的四種用戶場景及對應體現出的緩存價值,可以肯定的是APP的緩存功能是有一定的必要性。那麼手機緩存只有優點沒有缺點嘛?答案顯而易見是NO。毋容置疑的是APP的緩存會一定程度上影響到使用者手機的儲存空間,所以需要設計一個清理緩存的功能,以便於用戶有效的使用被釋放的存儲空間。那麼接下來談論如何來設計清理緩存功能呢?

是否需要使用者清理緩存

1、不需要

不需要使用者清理理APP緩存的前提是,此APP不會佔用使用者手機過多的存儲空間,這時候就不需要使用者自己來清理緩存了,可以通過系統自動來清理APP緩存。自動清理緩存的兩個要素:設置緩存的上限、設置清理緩存的頻率。

2、需要

多數常見於IM類、電商類、資訊類、閱讀類、視頻類等APP需要單獨設置清理緩存的功能,因為這類APP會因為用戶頻繁的使用緩存較多的資料在本地,可能會佔用手機較多的儲存空間,這類APP會把是否清理緩存的許可權交由用戶自己決定。(另外還有少部分APP,使用者可自訂設置緩存的上限,這樣用戶不僅有清理緩存的許可權,還有設置緩存上限的許可權。比如網易雲音樂,使用者可勾選緩存的上限值是多少,按理超過的上限的緩存是不被存放到本地來佔用手機儲存空間的,一旦達到緩存上限時,APP是不會進行超過緩存上限的提醒,主要是為了不干擾用戶正常操作。)

用戶清除緩存的細節

1、顯示緩存大小

這是最基本、也是不能忽略的一點就是顯示緩存的大小,以便於使用者根據緩存大小來判斷是否要清理這些緩存。

2、顯示當前APP緩存佔用手機儲存空間的比例

顯示當前緩存佔用手機存儲空間的比例,以及可用的手機儲存空間有多大,為用戶選擇是否清理緩存提供了兩種方式的比較,提高使用者清理緩存的參考度。

3、顯示緩存分類

將APP緩存進行分類,一般分類有兩種維度,一種是時間維度,另外一種是內容維度。

(1)時間維度

主要是可清理某一時間段的手機緩存。比如飛豬顯示3天之內、3~7天、7天之外各階段緩存大小,用戶可自由選擇清理哪一時間段或多個時間段的緩存。這樣在使用者手機儲存空間不足,但又不想清理最近使用APP留下的緩存情況下,給使用者提供了一個不錯的選擇。

(2)內容維度

按照緩存內容進行分類顯示緩存大小並支援單獨清理某一類緩存。比如same緩存分為清除圖片緩存、清除語音緩存、清除資料緩存、草稿檔緩存、貼紙圖片緩存及各自緩存大小,這樣當使用者需要在APP緩存和手機儲存空間之間進行權衡時,可選擇對用戶損害最小的一類緩存進行清除。這不僅能滿足使用者釋放手機儲存空間的需求,又提高了用戶體驗。

4、清理緩存的交互顯示

(1)是否需要清理緩存

當用戶點擊進行緩存清理時,彈出彈框提示使用者是否需要清理,一方面告知使用者清理緩存需要一定的時間,減少等到緩存被清理過程中的焦慮感;另外一方面,避免用戶手誤錯點到清理緩存,使得用戶能慎重決定。

(2)緩存是否成功清理

當系統清理完緩存時,希望用戶能得到緩存是否清理成功的回饋,可以是緩存大小變為0,也可以是一句“緩存清理成功”。

五、總結

最後,至於大家如何設計各自APP清理緩存的功能,那就需要大家考慮各自APP所屬類型,不同類型的APP清理緩存的側重點和複雜度也不同,若是低頻率且緩存較小的APP可考慮系統自動清理緩存,而不用花費精力設計獨立清理緩存的功能供用戶操作;另外就是考慮目前產品所屬階段,如果是產品上線初期,應該把精力花在強需求、高頻次的功能上,而不是低頻率的清理緩存上。

以上種種只是我的個人想法,大家有沒有什麼更好的想法呢?歡迎來一起思考討論。

本文由 @董小白 原創發佈于人人都是產品經理。未經許可,禁止轉載。