iOS開(kāi)發(fā)進(jìn)階- 圖片緩存框架

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

一、框架&架構(gòu)

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

二、圖片緩存框架

怎樣設(shè)計(jì)一個(gè)圖片緩存框架?

2.1 圖片讀寫

圖片通過(guò)什么方式進(jìn)行讀寫,過(guò)程怎樣的?

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

2.2 內(nèi)存設(shè)計(jì)

內(nèi)存的設(shè)計(jì)上需要考慮哪些問(wèn)題

  • 存儲(chǔ)的空間大小Size,根據(jù)圖片的大小分為不同的存儲(chǔ)區(qū)域,例如:使用頻率高占空間小的會(huì)保存的張數(shù)多,占內(nèi)存大的圖片保存的張數(shù)少。
  • 淘汰策略,第一種隊(duì)列先進(jìn)先出的方式淘汰。第二種LRU算法(最近最久未使用算法),在固定時(shí)長(zhǎng)內(nèi)是否使用過(guò),未使用則淘汰。需要注意時(shí)間/空間開(kāi)銷問(wèn)題。提高檢查觸發(fā)頻率檢測(cè)。

2.3 磁盤設(shè)計(jì)

磁盤設(shè)計(jì)需要考慮哪些問(wèn)題?

  • 存儲(chǔ)方式選擇
  • 大小限制
  • 淘汰策略

2.4 網(wǎng)絡(luò)部分的設(shè)計(jì)

網(wǎng)絡(luò)部分的設(shè)計(jì)需要考慮哪些問(wèn)題?

  • 圖片請(qǐng)求最大并發(fā)量
  • 請(qǐng)求超時(shí)策略,例如:請(qǐng)求失敗時(shí),重新請(qǐng)求。
  • 請(qǐng)求優(yōu)先級(jí),是否是用戶當(dāng)前緊急使用的圖片。

2.5 圖片解碼

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

  • 應(yīng)用策略模式對(duì)不同圖片格式進(jìn)行解碼

在哪個(gè)階段做圖片解碼處理?

磁盤讀取后或者網(wǎng)絡(luò)請(qǐng)求后。

小結(jié)

本節(jié)梳理圖片緩存庫(kù)設(shè)計(jì)的流程和需要考慮的關(guān)鍵點(diǎn)。深入學(xué)習(xí)可以查看SDWebImage或者YYKit中關(guān)于圖片換存庫(kù)的設(shè)計(jì)。另外找了幾篇緩存庫(kù)相關(guān)的優(yōu)秀博文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 文/春風(fēng)柳上歸 八百里秦川西起寶雞峽,東至潼關(guān)。即渭河大平原。 八百里秦川塵土飛揚(yáng),三千萬(wàn)秦人齊吼秦腔,端一碗髯面...
    春風(fēng)柳上歸閱讀 681評(píng)論 8 5
  • “丫頭,我在等你,你還在單身嗎?” 葉欣又夢(mèng)見(jiàn)余成了,當(dāng)她哭著醒來(lái),醒來(lái)想要捉住這夢(mèng)的尾巴的時(shí)候。夢(mèng)卻早不知道飛到...
    獨(dú)立行走的魚閱讀 1,040評(píng)論 4 9

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