iOS SDWebImage支持URL不變時(shí)更新圖片內(nèi)容

本人親測(cè)有效赡茸,如果有錯(cuò)缎脾,希望大家指出。我的SDWebImage版本是(4.4.1)?pod 'SDWebImage', '~> 4.4.1' (應(yīng)該是在4.0以上的都可以)

? 方法是

?[imageview sd_setImageWithURL:[NSURL URLWithString:url ]placeholderImage:nil options:SDWebImageRefreshCached];

我之前的寫法是:

?[imageview sd_setImageWithURL:[NSURL URLWithString:url ]placeholderImage:nil ];

區(qū)別在于多加啦一個(gè)參數(shù):options:SDWebImageRefreshCached

SDWebImageRefreshCached參數(shù)設(shè)置之后占卧,會(huì)怎么樣遗菠?

不使用SDWebImage提供的內(nèi)存緩存和硬盤緩存

采用NSURLCache提供的緩存,有效時(shí)間只有5秒

圖片不一致的問(wèn)題是解決了华蜒,不過(guò)效果跟不使用緩存差別不大

個(gè)人建議這個(gè)參數(shù)還是不要用為好辙纬,為了一個(gè)小特性,丟掉了SDWebImage最核心的特色叭喜。

解決方案

方案1

后臺(tái)給的url中增加字段贺拣,表示圖片是否更新,比如增加一個(gè)timestamp字段.圖片更新了捂蕴,就更新下這個(gè)字段譬涡;

對(duì)客戶端來(lái)說(shuō),只要這個(gè)timestamp字段變了啥辨,整個(gè)url就不一樣了涡匀,就會(huì)從網(wǎng)絡(luò)取圖片。比如http://xxx/xx? timestamp=xxx

也可以添加圖片文件的md5來(lái)表示文件是否更新溉知,比如http://xxx/xx? md5=xxx渊跋。并且md5比時(shí)間戳要好,這是強(qiáng)校驗(yàn)着倾。時(shí)間戳在服務(wù)器回滾或者服務(wù)器重啟的時(shí)候會(huì)有特殊的邏輯拾酝。不過(guò)大多數(shù)時(shí)候時(shí)間戳也夠用了。

====這個(gè)方案客戶端不用改卡者,后臺(tái)改動(dòng)也不會(huì)太大蒿囤。====強(qiáng)烈推薦

方案2

客戶端修改緩存策略,只用內(nèi)存緩存崇决,不用磁盤緩存材诽。就是設(shè)置SDWebImageCacheMemoryOnly參數(shù)底挫。

這個(gè)方案的好處是服務(wù)端不用改,客戶端改動(dòng)很少脸侥。

但是問(wèn)題是程序關(guān)閉又打開之后建邓,緩存就沒(méi)了,需要訪問(wèn)網(wǎng)絡(luò)睁枕,重新加載圖片官边,緩存性能下降很多

方案3

客戶端修改緩存時(shí)間。目前的緩存有效時(shí)間為7天外遇,有點(diǎn)長(zhǎng)注簿;可以修改為一個(gè)經(jīng)驗(yàn)值,比如1天跳仿?1小時(shí)诡渴?

這個(gè)方案的好處是服務(wù)端不用改,客戶端也改動(dòng)很少菲语,緩存性能下降程度比方案二要小一點(diǎn)妄辩;

缺點(diǎn)是:在緩存時(shí)間內(nèi),不一致的問(wèn)題還是存在的山上,問(wèn)題只是減輕眼耀,并沒(méi)有消除

方案4

客戶端不用現(xiàn)在的第三方庫(kù)(SDWebImage),(設(shè)置SDWebImageCacheMemoryOnly參數(shù)方案不推薦)胶哲,采用系統(tǒng)API實(shí)現(xiàn)(NSURLCache)畔塔。服務(wù)端利用Http的頭部字段進(jìn)行緩存控制潭辈。

Cache-Control:可以設(shè)定緩存有效時(shí)間鸯屿,默認(rèn)是5s,具體時(shí)間由服務(wù)端設(shè)置把敢。設(shè)置一個(gè)經(jīng)驗(yàn)值寄摆,1天?1小時(shí)修赞?

Last-Modified/If-Modified-Since:時(shí)間戳婶恼。有更新服務(wù)端就返回200,客戶端下載柏副,更新圖片勾邦;沒(méi)更新,服務(wù)端就返回304割择,客戶端使用本地緩存眷篇。

Etag/If-None-Match:標(biāo)簽,一般用MD5值荔泳。有更新服務(wù)端就返回200蕉饼,客戶端下載虐杯,更新圖片;沒(méi)更新昧港,服務(wù)端就返回304擎椰,客戶端使用本地緩存。

這個(gè)方案的優(yōu)點(diǎn)是:服務(wù)端控制緩存创肥,并且既有全局控制(緩存有效時(shí)間)达舒,又有特定的控制(時(shí)間戳或者M(jìn)D5標(biāo)簽)

缺點(diǎn):客戶端不能利用成熟的第三方庫(kù),需要自己實(shí)現(xiàn)圖片緩存瓤的,非主流用法休弃。服務(wù)端改動(dòng)也非常大。====不推薦

備注:

選方案1的應(yīng)該普遍一點(diǎn)圈膏,比較簡(jiǎn)單塔猾;

選方案4也是可以的,不過(guò)要求服務(wù)端客戶端配合開發(fā)稽坤,并且也沒(méi)有必要用SDWebImage丈甸,直接用系統(tǒng)API來(lái)做就是了

總結(jié):這是一道經(jīng)常問(wèn)的面試題,希望對(duì)你有幫助尿褪。謝謝你的閱讀睦擂,如有不妥的請(qǐng)指出!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杖玲,一起剝皮案震驚了整個(gè)濱河市顿仇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摆马,老刑警劉巖臼闻,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異囤采,居然都是意外死亡述呐,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蕉毯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乓搬,“玉大人,你說(shuō)我怎么就攤上這事代虾〗希” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵棉磨,是天一觀的道長(zhǎng)江掩。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么频敛? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任项郊,我火速辦了婚禮,結(jié)果婚禮上斟赚,老公的妹妹穿的比我還像新娘着降。我一直安慰自己,他們只是感情好拗军,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布任洞。 她就那樣靜靜地躺著,像睡著了一般发侵。 火紅的嫁衣襯著肌膚如雪交掏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天刃鳄,我揣著相機(jī)與錄音盅弛,去河邊找鬼。 笑死叔锐,一個(gè)胖子當(dāng)著我的面吹牛挪鹏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播愉烙,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼讨盒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了步责?” 一聲冷哼從身側(cè)響起返顺,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔓肯,沒(méi)想到半個(gè)月后遂鹊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡省核,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年稿辙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昆码。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片气忠。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赋咽,靈堂內(nèi)的尸體忽然破棺而出旧噪,到底是詐尸還是另有隱情,我是刑警寧澤脓匿,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布淘钟,位于F島的核電站,受9級(jí)特大地震影響陪毡,放射性物質(zhì)發(fā)生泄漏米母。R本人自食惡果不足惜勾扭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铁瞒。 院中可真熱鬧妙色,春花似錦、人聲如沸慧耍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芍碧。三九已至煌珊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泌豆,已是汗流浹背定庵。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暑认。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓柿隙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親敛滋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容