图像异步加载 使用网络图片,特别是像淘宝、微淘这种需要大量展示图片的app,如果使用同步图片加载,那么整个应用都会被图片加载的过程给拖慢,因此也一般会使用异步图片加载,除了使用异步图片加载,为了节省网络流量和加快图片加载速度,需要另外进行图片缓存。 异步加载图片 异步加载图片很简单,利用GDC开一个异步线程下载图片就好了,直接上代码: dispatch_queue_t downloadQueue = dispatch_queue_create("com.abc.processsmagequeue", NULL); dispatch_async(downloadQueue, ^{ NSData * imageData = [NSData dataWithContentsOfURL:url]; }); 缓存图片 缓存图片可以使用 SDWebImage,这个lib相当方便,我使用的是 SDImageCache 这个类来缓存图片。作为存储图片的 key,可以直接使用图片的url作为key,然而图片url作为key会过长,因此可以使用url的md5作为图片的key,上代码: md5: NSString* urlMD5 = [url.absoluteString MD5Hash]; 取: UIImage *image = [[SDImageCache sharedImageCache] imageFromKey:urlMD5]; 存: [[SDImageCache sharedImageCache] storeImage:tmpImage forKey:urlMD5 toDisk:YES]; webp的使用 webp 是google发表的一种图片格式,这种图片压缩率会比jpeg、png更高,因此下载图片会更省流量(这种图片在chrome是可以直接解析的)。这iOS解析时,可以直接使用 WebPImage。 NSData *imageData = [NSData dataWithContentsOfURL:url]; UIImage *tmpImage = [[WebPImage alloc] loadWebPFromData:imageData];