安卓三級緩存的小知識

由於博主在安卓方面還是一個小白,面試被問到了這樣一道題:

如何在使用三級緩存的情況下,後臺的數據和客戶端的數據能夠同時更新。(明顯有坑啊。。。。)

坑: 後臺的數據和客戶端的數據如果同時更新, 要三級緩存還有什麼用?


後來回來想一想:

可以把獲取到的字符串以流的形式保存到本地, 當再次進入的時候,先從內存中拿,內存中沒有數據, 從本地拿數據,

最重要的是對本地的緩存文件進行判斷,看是否有效,可以給本地緩存的設置一個緩存的時間, 如果緩存時間過了,本地的緩存無效,如果有效,讀本地的緩存數據,如果無效,從網絡上獲取,這樣,既能發揮了三級緩存的作用,又能保證後臺服務器更新數據的時候,客戶端也能跟着更新。

大體邏輯是這樣:

 <span style="white-space:pre">	</span>// 2、獲取緩存文件
        File cahceFile = getCacheFile(url);
        // 3、判斷緩存文件是否有效
        if (cacheFileIsValid(cahceFile)) {
        // 4、如果緩存文件是有效的,讀緩存
           
        } else {
        // 5、如果緩存文件是無效的,讀網絡
          

  開發者一方面希望儘量讀取緩存,用戶一方面希望實時刷新,但是響應速度越快越好,流量消耗越少越好(關於這塊,的確開發中我沒怎麼想到,畢竟接口就是這麼多,現在公司的產品幾乎點一下就訪問一下,而且還有些雞肋多餘的功能。,是一個矛盾。

1. 數據的最長多長時間不變,對應用無大的影響。

       比如,你的數據更新時間爲4小時,則緩存時間設置爲1~2小時比較合適。也就是更新時間/緩存時間=2,但用戶個人修改、網站編輯人員等一些人爲的更新就另說。一天用戶總會看到更新,即便有延遲也好,視你產品的用途了;如果你覺得你是資訊類應用,再減少,2~4小時,如果你覺得數據比較重要或者比較受歡迎,用戶會經常把玩,再減少,1~2小時,依次類推。


2. 提供刷新按鈕。

       必要時候或最保險的方法使在相關界面提供一個刷新按鈕,或者當下流行的下拉列表刷新方式。爲緩存,爲加載失敗提供一次重新來過的機會。畢竟喝骨頭湯的時候,我也不介意碗旁多雙筷子。

總而言之,一切用戶至上,爲了更好的用戶體驗,方法也會層出不窮。期待更好的辦法



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章