*****
**圖片三級緩存概述**
[TOC=6]
# 1. 為什么要進行三級緩存
****

三級緩存策略,最實在的意義就是 減少不必要的流量消耗,增加加載速度 。
如今的 APP 網絡交互似乎已經必不可少,通過網絡獲取圖片再正常不過了。但是,每次啟動應用都要從網絡獲取圖片,或者是想重復瀏覽一些圖片的時候,每次瀏覽都需要網絡獲取,消耗的流量就多了,在如今的流量資費來說,肯定會容易影響用戶數量。
還有就是網絡加載圖片,有時候會加載很慢,影響了用戶體驗。
另外從開發角度來說,Bitmap 的創建非常消耗時間和內存,可能導致頻繁GC。而使用緩存策略,會更加高效地加載 Bitmap,減少卡頓,從而減少讀取時間。
而內存緩存的主要作用是防止應用重復將圖片數據讀取到內存當中,硬盤緩存則是防止應用重復從網絡或其他地方重復下載和讀取數據。
# 2. 什么是三級緩存?
****
1. 內存緩存,優先加載,速度最快
2. 本地緩存,次優先加載,速度快
3. 網絡緩存,最后加載,速度慢,浪費流量
# 3. 三級緩存的原理
****
1. 首次加載的時候通過網絡加載,獲取圖片,然后保存到內存和 SD 卡中。
2. 之后運行 APP 時,優先訪問內存中的圖片緩存。
3. 如果內存沒有,則加載本地 SD 卡中的圖片。
具體的緩存策略可以是這樣的:內存作為一級緩存,本地作為二級緩存,網絡加載為最后。其中,內存使用 LruCache ,其內部通過 LinkedhashMap 來持有外界緩存對象的強引用;對于本地緩存,使用 DiskLruCache。加載圖片的時候,首先使用 LRU 方式進行尋找,找不到指定內容,按照三級緩存的方式,進行本地搜索,還沒有就網絡加載。
- 咨詢項目實戰
- 第一單元 HTTP協議
- 1.1 OSI七層模型
- 1.2 HTTP協議(重點)
- 1.3 HTTPS協議(了解)
- 1.4 TCP/IP協議擴展
- 1.5 WebService簡介及實戰(無接口)
- 1.6 課后練習
- 第二單元 HTTPURLConnection
- 2.1 ANR
- 2.2 網絡判斷
- 2.3 HTTPURLConnection
- 2.4 課后練習
- 第三單元 AsyncTask
- 3.1 AsyncTask概述
- 3.2 AsyncTask基本使用
- 3.3 課后練習
- 第四單元 圖片異步加載
- 4.1 圖片異步加載概述
- 4.2 LruCache
- 4.3 DiskLRUCache
- 4.4 圖片三級緩存概述
- 4.5 封裝圖片加載緩存框架
- 第五單元 ListView多條目
- 5.1 ListView多條目概述
- 5.2 ListView多條目的使用
- 第六單元 ListView實現下拉刷新上拉加載
- 6.1 下拉刷新和上拉加載更多
- 6.2 XListView概述
- 6.3 XListView的使用
- 第七單元 封裝網絡框
- 7.1 封裝網絡框架概述
- 7.2 網絡框架的封裝
- 第八單元 項目介紹
- 8.1 公司項目團隊架構簡介
- 8.2 項目文檔及項目流程介紹
- 8.3 項目管理
- 8.4 項目開發
- 第九單元 項目框架搭建
- 9.1 基類封裝概述
- 9.2 Application中初始化配置
- 9.3 項目中的工具類
- 9.4 封裝網絡請求框架
- 9.5 封裝圖片異步緩存框架
- 第十單元 搭建UI框架1
- 10.1 側滑菜單概述
- 10.2 主界面框架搭建
- 第十一單元 搭建UI框架2
- 11.1 TabLayout的概述
- 11.2 TabLayout的使用
- 第十二單元 圖片上傳
- 12.1 圖片上傳概述
- 12.2 圖片上傳的實現
- 第十三單元 PullToRefresh
- 13.1 PullToRefresh概述
- 13.2 PullToRefresh的使用
- 13.3 緩存業務實現思路
- 第十四單元 事件分發及滑動沖突
- 14.1 事件分發概述
- 14.2 事件分發流程
- 14.3 事件分發的使用
- 第十五單元 傳感器的基本使用
- 15.1 傳感器概述
- 15.2 傳感器的使用
- 第十六單元 HTML與CSS復習
- 16.1 HTML
- 16.2 CSS
- 第十七單元 js復習
- 17.1 js基礎語法
- 17.2 js數組和內置對象
- 17.3 js常用事件
- 17.4 js對象模型
- 17.5 js 正則表達式
- 第十八單元 WebView
- 18.1 WebView 概述
- 18.2 WebView的使用
- 18.3 WebView與js交互
- 第十九單元 項目案例
- 項目概述
- 第二十單元 項目答辯
- 周考
- 第一周周考
- 第二周周考
- 第三種周考
- 月考
- 接口文檔