在以前我寫過SDWebImage的使用方法,主要是用與獲取網絡圖片,沒有看過的朋友能夠看看。緩存
這篇文章將主要介紹SDWebImage的實現原理,主要針對於獲取網絡圖片的原理,若是沒有第三方咱們該怎麼去作,固然我知識用文字去介紹,我想花大把的時間去深刻理解咱們用不到的東西,是很不值得的,不過興趣的朋友能夠去其餘博客上查找相應信息,畢竟學無止境。好了下面開始進入正題。網絡
1)當我門須要獲取網絡圖片的時候,咱們首先須要的即是URl沒有URl什麼都沒有,得到URL後咱們SDWebImage實現的並非直接去請求網路,而是檢查圖片緩存中有沒有和URl相關的圖片,若是有則直接返回image,若是沒有則進行下一步。blog
2)當圖片緩存中沒有圖片時,SDWebImage依舊不會直從網絡上獲取,而是檢查沙盒中是否存在圖片,若是存在,則把沙盒中對應的圖片存進image緩存中,而後按着第一步的判斷進行。隊列
3)若是沙盒中也不存在,則顯示佔位圖,而後根據圖片的下載隊列緩存判斷是否正在下載,若是下載則等待,避免二次下載。若是不存則建立下載隊列,下載完畢後將下載操做從隊列中清除,而且將image存入圖片緩存中。圖片
4)刷新UI(固然根據實際狀況操做)將image存入沙盒緩存。博客