iOS開發進階- 圖片緩存框架

課程: 新浪微博資深大牛全方位剖析 iOS 高級面試

一、框架&架構

模塊化
分層
解耦
降低代碼重合度

二、圖片緩存框架

怎樣設計一個圖片緩存框架?

2.1 圖片讀寫

圖片通過什么方式進行讀寫,過程怎樣的?

  • 以圖片URL的單向Hash值作為Key
讀取流程

2.2 內存設計

內存的設計上需要考慮哪些問題

  • 存儲的空間大小Size,根據圖片的大小分為不同的存儲區域,例如:使用頻率高占空間小的會保存的張數多,占內存大的圖片保存的張數少。
  • 淘汰策略,第一種隊列先進先出的方式淘汰。第二種LRU算法(最近最久未使用算法),在固定時長內是否使用過,未使用則淘汰。需要注意時間/空間開銷問題。提高檢查觸發頻率檢測。

2.3 磁盤設計

磁盤設計需要考慮哪些問題?

  • 存儲方式選擇
  • 大小限制
  • 淘汰策略

2.4 網絡部分的設計

網絡部分的設計需要考慮哪些問題?

  • 圖片請求最大并發量
  • 請求超時策略,例如:請求失敗時,重新請求。
  • 請求優先級,是否是用戶當前緊急使用的圖片。

2.5 圖片解碼

對于不同格式的圖片,解碼采用什么方式?

  • 應用策略模式對不同圖片格式進行解碼

在哪個階段做圖片解碼處理?

磁盤讀取后或者網絡請求后。

小結

本節梳理圖片緩存庫設計的流程和需要考慮的關鍵點。深入學習可以查看SDWebImage或者YYKit中關于圖片換存庫的設計。另外找了幾篇緩存庫相關的優秀博文

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 文/春風柳上歸 八百里秦川西起寶雞峽,東至潼關。即渭河大平原。 八百里秦川塵土飛揚,三千萬秦人齊吼秦腔,端一碗髯面...
    春風柳上歸閱讀 598評論 8 5
  • “丫頭,我在等你,你還在單身嗎?” 葉欣又夢見余成了,當她哭著醒來,醒來想要捉住這夢的尾巴的時候。夢卻早不知道飛到...
    獨立行走的魚閱讀 969評論 4 9