用SDWebImage做图片缓存

      有时候我们有需求根据网络情况看是否显示一些大的图片。举个例子,很多应用都会有开屏广告,而开屏广告一般的还是好几百kb,如果是在2G、3G网络情况下,加载这样的网络图片会耗费很长时间,2G网络甚至会一直卡在页面没法进入应用,这对于应用来说是很不好的体验。

      对于这样的情况,我们可以考虑在wifi情况下把开屏图片做一个缓存,把开屏图片的URL储存起来,下次打开应用,先判断网络情况,如果还是WiFi环境,直接重新加载,如果是非WiFi网络,根据请求回来的数据,把新的图片URL和储存的URL做一个比较,如果一样,说明还是上次的开屏图片,就可以直接把缓存的图片加载出来,如果URL不一致,说明不是同一个图片,就可以放弃图片。

      图片的缓存有多种实现方案,因为是单张图片,轻量级的NSuseDefaults可以满足条件,把image转成nsdata,储存进去。也可以用plist文件。而如果加载图片用的是SDWebImage,也可以直接用sd封装好的方法储存图片,以下是实现过程。

1.判断网络情况(用ASIHTTP的Reachability类判断)

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

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

2.wifi网络,储存图片的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环境,匹配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;

}

}

续:其实SDWebImage在加载网络图片的时候已经默认做了缓存,有时候并不需要我们自己做缓存就可以直接满足需求,只需要匹配相关的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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容