安卓客戶端快取機制

2021-06-27 00:29:40 字數 1847 閱讀 2675

在手機客戶端的應用中,如果經常訪問伺服器,那麼不僅伺服器的壓力就會比較大,而且載入慢導致使用者體驗不是很好,現在快取可以解決這一問題,靈活的快取可以說不僅大大減輕了伺服器的壓力,而且因為更快速的使用者體驗而方便了使用者。

採用快取,可以進一步大大緩解資料互動的壓力,我們簡略列舉一下快取管理的適用環境:

1. 提供網路服務的應用。

2. 資料更新不需要實時更新,但是哪怕是3-5分鐘的延遲也是可以採用快取機制。 

3. 快取的過期時間是可以接受的(不會因為快取帶來的好處,導致某些資料因為更新不及時而影響產品的形象等)。

使用快取帶來的好處:

1. 伺服器的壓力大大減小。

2. 客戶端的響應速度大大變快(使用者體驗)。

3. 客戶端的資料載入出錯情況大大較少,大大提高了應有的穩定性(使用者體驗)

4. 一定程度上可以支援離線瀏覽(或者說為離線瀏覽提供了技術支援)。

一、快取管理的方法

基於這個原理,一般有兩種快取管理方法:資料庫法和檔案法。

1.資料庫法快取管理

從實現上我們可以看到這種方法可以靈活存放檔案的屬性,進而提供了很大的擴充套件性,可以為其它的功能提供一定的支援;

從操作上需要建立資料庫,每次查詢資料庫,如果過期還需要更新資料庫,清理快取的時候還需要刪除資料庫資料,稍顯麻煩,而資料庫操作不當又容易出現一系列的效能,anr問題,實現的時候要謹慎,具體作的話,但也只是增加乙個工具類或方法的事情。

還有乙個問題,快取的資料庫是存放在/data/data//databases/目錄下,是占用記憶體空間的,如果快取累計,容易浪費記憶體,需要及時清理快取。

當然這種方法從目前一些應用的實用上看,我沒有發現什麼問題。

本文我側重強調第二種方法,第一種方法的實現,就此掠過。

2.檔案法快取管理

這種方法,使用file.lastmodified()方法得到檔案的最後修改時間,與當前時間判斷是否過期,從而實現快取效果。

實現上只能使用這乙個屬性,沒有為其它的功能提供技術支援的可能。

操作上倒是簡單,比較時間即可。本身處理也不容易帶來其它問題,代價低廉。

二、檔案法快取管理的兩點說明

1. 不同型別的檔案的快取時間不一樣。

籠統的說,不變檔案的快取時間是永久,變化檔案的快取時間是最大忍受不變時間。

說白點,檔案內容是不變的,直到清理,我們是可以永遠讀取快取的。

配置檔案內容是可能更新的,需要設定乙個可接受的快取時間。

2. 不同環境下的快取時間標準不一樣。

無網路環境下,我們只能讀取快取檔案,哪怕快取早就過期。

wifi網路環境下,快取時間可以設定短一點,一是網速較快,而是流量不要錢。

移動資料流量環境下,快取時間可以設定長一點,節省流量,就是節省金錢,而且使用者體驗也更好。

舉個例子吧,最近本人在做的乙個應用在wifi環境下的快取時間設定為5分鐘,移動資料流量下的快取時間設定為1小時。

這個時間根據自己的實際情況來設定:資料的更新頻率,資料的重要性等。

三、什麼時候重新整理

開發者一方面希望盡量讀取快取,使用者一方面希望實時重新整理,但是響應速度越快越好,流量消耗越少越好,是乙個矛盾。

其實何時重新整理我也不知道,這裡我提供兩點建議:

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

比如,你的資料更新時間為1天,則快取時間設定為4~8小時比較合適,一天他總會看到更新,如果你覺得你是資訊類應用,再減少,2~4小時,如果你覺得資料比較重要或者比較受歡迎,使用者會經常把玩,再減少,1~2小時,依次類推。

為了保險起見,你可能需要毫無理由的再次縮減一下。

2. 提供重新整理按鈕。

上面說的不一定保險,最保險的方法使在相關介面提供乙個重新整理按鈕,為快取,為載入失敗提供一次重新來過的機會,有了這個重新整理按鈕,我們的心也才真的放下來。

HTTP快取機制 客戶端快取

http快取機制分為兩種,客戶端快取和服務端快取,本文主要對客戶端快取進行簡單的分析。服務端快取又分為 伺服器快取 和 反向 伺服器快取 也叫閘道器快取,比如 nginx反向 squid等 其實廣泛使用的 cdn 也是一種服務端快取,目的都是讓使用者的請求走 捷徑 並且都是快取 檔案等靜態資源。客戶...

tldr 的安卓客戶端

在google play上找到了tldr的兩個android客戶端,由於在其它國內市場似乎沒有,所以分享給大家 這個相對要好一些,資料是離線的,並且整合了乙個小終端可以執行當前查到的命令 前提是你的系統有這些命令,並且是普通使用者可以跑的 也有些小問題 本部落格共享 本部落格共享 因為依賴於pyya...

Flutter安卓客戶端打包

想要安裝到手機上,必須要進行打包,因為沒有蘋果手機,所以只能打包android客戶端的apk。android label 這個是打包的專案名稱 android icon 這個是打包生成的圖示,可以替換或者改名字 官方文件上寫的是,請通過在執行以下命令來建立乙個 keytool genkey v ke...