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)化。
總而言之就是為了更快更好。