用SDWebImage做圖片緩存

? ? ? 有時候我們有需求根據(jù)網(wǎng)絡情況看是否顯示一些大的圖片县好。舉個例子计螺,很多應用都會有開屏廣告,而開屏廣告一般的還是好幾百kb卜朗,如果是在2G蝌麸、3G網(wǎng)絡情況下点寥,加載這樣的網(wǎng)絡圖片會耗費很長時間,2G網(wǎng)絡甚至會一直卡在頁面沒法進入應用来吩,這對于應用來說是很不好的體驗敢辩。

? ? ? 對于這樣的情況,我們可以考慮在wifi情況下把開屏圖片做一個緩存误褪,把開屏圖片的URL儲存起來责鳍,下次打開應用,先判斷網(wǎng)絡情況兽间,如果還是WiFi環(huán)境历葛,直接重新加載,如果是非WiFi網(wǎng)絡嘀略,根據(jù)請求回來的數(shù)據(jù)恤溶,把新的圖片URL和儲存的URL做一個比較,如果一樣帜羊,說明還是上次的開屏圖片咒程,就可以直接把緩存的圖片加載出來,如果URL不一致讼育,說明不是同一個圖片帐姻,就可以放棄圖片。

? ? ? 圖片的緩存有多種實現(xiàn)方案奶段,因為是單張圖片饥瓷,輕量級的NSuseDefaults可以滿足條件,把image轉成nsdata痹籍,儲存進去呢铆。也可以用plist文件。而如果加載圖片用的是SDWebImage蹲缠,也可以直接用sd封裝好的方法儲存圖片棺克,以下是實現(xiàn)過程悠垛。

1.判斷網(wǎng)絡情況(用ASIHTTP的Reachability類判斷)

NSURL * URL = [NSURL URLWithString:Info.pic];

Reachability *reach = [Reachability reachabilityWithHostName: @"www.baidu.com"];

2.wifi網(wǎng)絡,儲存圖片的URL和圖片

if (reach.isReachableViaWiFi)

{

NSUserDefaults *set = [NSUserDefaults standardUserDefaults];

[set setURL:URL forKey:@"openImageUrl"];

[set synchronize];

[adImageView sd_setImageWithURL:URL completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL){

if (image)

{

skinBtn.hidden=FALSE;

}

}];

// 把開屏圖片緩存到磁盤

UIImage *image = _adImageView.image;

SDImageCache *imageCache = [SDImageCache sharedImageCache];

[imageCache storeImage:image forKey:@"openImageCache" toDisk:YES];

}

3.非wifi環(huán)境娜谊,匹配URL

else if (reach.isReachableViaWWAN)

{

NSURL *url = (NSURL *)[[NSUserDefaults standardUserDefaults]objectForKey:@"openImageUrl"];

NSString *pic = [NSString stringWithFormat:@"%@",url];

if ([pic isEqualToString:Info.pic])

{

SDImageCache *imageCache = [SDImageCache sharedImageCache];

UIImage *image = [imageCache imageFromDiskCacheForKey:@"openImageCache"];

adImageView.image = image;

}

}

續(xù):其實SDWebImage在加載網(wǎng)絡圖片的時候已經(jīng)默認做了緩存确买,有時候并不需要我們自己做緩存就可以直接滿足需求,只需要匹配相關的URL就可以查找是否緩存有圖片(會去磁盤和內存里面找):關鍵在于用SDWebImageManager這個類查找是否有緩存

上面的代碼可以簡化為:

if (cyAdInfo_)

{

UIButton* skinBtn = [UIButton buttonWithType:UIButtonTypeCustom];

skinBtn.hidden=TRUE;

UIImageView* adImageView=[[UIImageView alloc] init];

adImageView.userInteractionEnabled = TRUE;

adImageView.frame=self.view.bounds;

adImageView.contentMode = UIViewContentModeScaleAspectFill;

NSURL* URL = [NSURL URLWithString:cyAdInfo_.pic];

Reachability *reach = [Reachability reachabilityWithHostName: @"www.baidu.com"];

if (reach.isReachableViaWiFi)

{

[adImageView sd_setImageWithURL:URL completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)

{

}];

adShowing = TRUE;

}

else if (reach.isReachableViaWWAN)

{

SDWebImageManager *manager = [SDWebImageManager sharedManager];


//分別判斷磁盤和內存中是否有跟相關URL匹配的image

if ([manager diskImageExistsForURL:URL]||[manager cachedImageExistsForURL:URL])

{

adImageView.image = [[manager imageCache] imageFromDiskCacheForKey:URL.absoluteString];

adShowing = TRUE;

skinBtn.hidden = FALSE;

}

}

self.adImageView = adImageView;

[self.view addSubview:adImageView];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末因俐,一起剝皮案震驚了整個濱河市拇惋,隨后出現(xiàn)的幾起案子周偎,更是在濱河造成了極大的恐慌抹剩,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蓉坎,死亡現(xiàn)場離奇詭異澳眷,居然都是意外死亡,警方通過查閱死者的電腦和手機蛉艾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門钳踊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人勿侯,你說我怎么就攤上這事拓瞪。” “怎么了助琐?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵祭埂,是天一觀的道長。 經(jīng)常有香客問我兵钮,道長蛆橡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任掘譬,我火速辦了婚禮泰演,結果婚禮上,老公的妹妹穿的比我還像新娘葱轩。我一直安慰自己睦焕,他們只是感情好,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布靴拱。 她就那樣靜靜地躺著垃喊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缭嫡。 梳的紋絲不亂的頭發(fā)上缔御,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音妇蛀,去河邊找鬼耕突。 笑死笤成,一個胖子當著我的面吹牛,可吹牛的內容都是我干的眷茁。 我是一名探鬼主播炕泳,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼上祈!你這毒婦竟也來了培遵?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤登刺,失蹤者是張志新(化名)和其女友劉穎籽腕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纸俭,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡皇耗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了揍很。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郎楼。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖窒悔,靈堂內的尸體忽然破棺而出呜袁,到底是詐尸還是另有隱情,我是刑警寧澤简珠,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布阶界,位于F島的核電站,受9級特大地震影響北救,放射性物質發(fā)生泄漏荐操。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一珍策、第九天 我趴在偏房一處隱蔽的房頂上張望托启。 院中可真熱鬧,春花似錦攘宙、人聲如沸屯耸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疗绣。三九已至,卻和暖如春铺韧,著一層夾襖步出監(jiān)牢的瞬間多矮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留塔逃,地道東北人讯壶。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像湾盗,于是被迫代替她去往敵國和親伏蚊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內容