SDWebImage 加载大尺寸图片优化~

最近在做大图片放大显示功能(一页只显示一张的,支持手势放大缩小),发现网上很多的优化方式都不能完成我的要求,没办法,只能自己做个记录,记录下自己优化过程。其实使用SDWebImage加载图片,本身性能优化已经很不错了,但是经不住强大的需求啊~~必须加载原图!毕竟现在手机拍摄功能越来越好,当然图片本身也越来越大,所以显示的时候负担也越来越重。

大致打印信息只有:

PBItemCollectionServicer connection disconnected.

网上很多文章说这个错误时第三方库不是最新的造成的,这里就要看具体问题具体分析

开始记录下优化过程 ,

最常用的优化方式是在内存警告中加释放缓存的方法:

[[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];

或者

 [[SDImageCache sharedImageCache] clearMemory];

优化1、网上可以查到的很多方法中最常用的:

[[SDImageCache sharedImageCache] setShouldDecompressImages:NO];

经过优化1的过程,一般用SDWebImage加载大尺寸图片可以保证流畅和内存相较安全

如果不起作用,说明有其他地方导致卡顿或者内存警告

优化2、如果是用滑动控件去加载的图片,那么需要考虑是否是图片刷新太频繁造成读取频繁手机负荷过大?

如果是UITableView和UICollectionView显示的,那么考虑下加载数据是在

- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath{}

还是在

- (void)collectionView:(UICollectionView*)collectionView willDisplayCell:(UICollectionViewCell*)cell forItemAtIndexPath:(NSIndexPath*)indexPath

两者区别我想各位小伙伴还是很清楚的

优化3:刷新不频繁又还有卡顿,那么是否是滑动过程控件的刷新和SDWebImage读取disk中图片同时进行增加了系统负担?

实际上这个情况很少见,但是也不是不可能,如果连续几张图片都是10M左右的超大图,在快速滑动状态下,就会出现这种情况

所以我们要做的就是尽量错开刷新图片和用户滑动的时间,比如在滑动过程中显示默认图片,滑动结束后,在进行显示,虽然一页只显示一张图片,但是也要做成列表展示时的优化。具体做法,小伙伴们应该有不少心得。

附上SDWebImage结束操作的方法:

[[SDWebImageManager sharedManager] cancelAll];

暂时只考虑到这么多~~

你可能感兴趣的:(SDWebImage 加载大尺寸图片优化~)