Glide三級緩存理解詳細

Glide三級緩存理解詳細

本文對Glide的三級緩存進行主要的文字描述,希望能幫助大家加深對Glide的緩存理解。

Glide官網(wǎng):https://github.com/bumptech/glide

一、普通的三級緩存

1、內(nèi)存緩存,優(yōu)先加載,速度最快
2、本地緩存,次優(yōu)先加載,速度快
3、網(wǎng)絡(luò)緩存,最后加載,速度慢,浪費流量

為什么要進行三級緩存
三級緩存策略,最實在的意義就是減少不必要的流量消耗,增加加載速度。

二、Glide三級緩存分類:活動緩存、內(nèi)存緩存、磁盤緩存

這個三級緩存是Glide自定義的三級緩存策略,跟我們之前接觸到的三級緩存(內(nèi)存,本地,網(wǎng)絡(luò))不一樣。

三、三級緩存范圍:

1、活動緩存:在某個Activity范圍,頁面退出該緩存就不存在
2、內(nèi)存緩存:某個App范圍,應(yīng)用完全退出就不存在
3、磁盤緩存:整個系統(tǒng),只要不刪除數(shù)據(jù),就一直存在

四、三級緩存的作用:

1、活動緩存:分擔內(nèi)存緩存的負擔,
2、內(nèi)存緩存:加快數(shù)據(jù)讀取
3、磁盤緩存:進行永久性保持

五、活動緩存的說明:

1、活動緩存并不是我們熟悉的內(nèi)存緩存,是Glide自己定義的一種緩存策略。
2、本質(zhì)上就是HasMap,用了一次就緩存,以后需要就直接拿,不需要就清除這個緩存。
3、該策略的存在也是為了及時釋放內(nèi)存,不需要等等整個應(yīng)用退出再釋放內(nèi)存,減輕應(yīng)用內(nèi)存負擔。
4、活動緩存比內(nèi)存緩存小,如果活動緩存滿了,會自動寫到內(nèi)存緩存。
5、系統(tǒng)會對內(nèi)存緩存進行自動管理,只要不是快速存放大內(nèi)存文件,并且不一直占有內(nèi)存對象,都不會內(nèi)存溢出。

六、內(nèi)存緩存的說明:

內(nèi)存緩存是系統(tǒng)自身會管理的,但是可以繼承LruCache,做進一步管理

七、磁盤緩存的說明:

1、磁盤緩存本質(zhì)是本地文件緩存,但是通過普通的文件寫入讀取效率不高。
2、Glide中使用了DiskLruCache框架進行數(shù)據(jù)保存和讀取。
3、效率高的主要原因是:磁盤緩存對圖片文件進行了加密和壓縮處理。

八、Glide三級緩存的使用

1、優(yōu)先從活動緩存獲取
2、活動緩存沒有就再內(nèi)存緩存中尋找
3、內(nèi)存緩存沒有,就去磁盤緩存讀取
4、磁盤緩存沒有就去網(wǎng)絡(luò)獲取本地文件讀取

整個思路和我們普通接觸到的三級緩存思路是一樣的。

普通的三級緩存對所有文件有適用,
Glide三級緩存針對的是圖片類型文件,
其實對音頻/視頻文件也有參考價值,其他文件的緩存作用就不大了。

九、Glide的緩存使用

Glide.with(this).load(url).into(imageView);//默認是開啟內(nèi)存緩存和磁盤緩存的。
1、內(nèi)存緩存

Glide.with(this)
     .load(url)
     .skipMemoryCache(true)//關(guān)閉內(nèi)存緩存
     .into(imageView);

2、磁盤緩存

Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)//磁盤緩存
     .into(imageView);

一個 diskCacheStrategy( ) 方法就可以調(diào)整他的硬盤緩存策略。其中可以傳入的參數(shù)有四種:

DiskCacheStrategy.ALL :     //表示既緩存原始圖片,也緩存轉(zhuǎn)換過后的圖片。
DiskCacheStrategy.NONE:     //表示不緩存任何內(nèi)容。
DiskCacheStrategy.RESOURCE: //表示只緩存原始圖片。
DiskCacheStrategy.RESULT:   //(已過期,新api4.11修改為后面兩個)表示只緩存轉(zhuǎn)換過后的圖片(默認選項)。
DiskCacheStrategy.DATA:     //表示只緩存轉(zhuǎn)換過后的圖片。
DiskCacheStrategy.AUTOMATIC  //表示智能判斷選擇模式(默認選項)。

內(nèi)存緩存和磁盤緩存是可以同時設(shè)置的。

Glide圖片的緩存是最多存在兩份:

1、是活動或內(nèi)存緩存
2、是磁盤緩存。

圖片緩存不會同時存在活動緩存和內(nèi)存緩存。

十、總結(jié)

Glide的活動緩存和內(nèi)存緩存本質(zhì)是我們熟悉的內(nèi)存緩存,
Glide的磁盤緩存本質(zhì)是我們熟悉的本地緩存。
不過Glide對里面每個緩存都進行了較大優(yōu)化。
總而言之就是為了更快更好。

面試過程,問到對Glide的緩存理解,主要對Glide三級緩存說明它們的范圍、作用、以及磁盤緩存相對普通本地文件緩存的優(yōu)點即可。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容