異步加載圖片方法:
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder;
- url 圖片的地址
- placeholder 網絡圖片在尚未加載成功時顯示的圖像
默認情況下,SDWebImage會忽略Header中的緩存設置,將圖片以url爲key進行保存,url與圖片是一一對應關係。所以請求同一個url時,SDWebImage會從緩存中取得圖片。一般的情況下用此方法可以滿足我們的應用要求,但是如果你請求同一個url,而這張圖片在服務器端更新了,本地客戶端再次請求時還是會返回緩存中的舊圖片,例如加載頭像類經常更新的圖片時,就會出現頭像不能更新的問題,由於url與圖片一一對應,一種解決的辦法是改變部分url地址方式實現更新,不過這種方法操作起來很複雜,下面介紹一個更方便的辦法
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options;
我們將第三個參數設置爲SDWebImageRefreshCached就可以實現圖片更新操作了,使用方法很簡單,如下:
NSURL *url = [NSURL URLWithString:@"http://www.example.com/image.png"];
UIImage *defaultImage = [UIImage imageNamed:@"default.png"];
[self.imageView setImageWithURL:url placeholderImage:defaultImage options:SDWebImageRefreshCached];
三、緩存的計算及清理
1、緩存計算,這裏的緩存計算,只計算SDWebImage的緩存,沙盒文件夾中的其它文件並不包括在內:
[SDWebImageManager.sharedManager.imageCache
calculateSizeWithCompletionBlock:^(NSUInteger fileCount, NSUInteger totalSize) {
}];
2、緩存清理
在SDWebImage中有兩種緩存,一種是磁盤緩存,一種爲內存緩存,框架都提供了相應的方法:
[[[SDWebImageManager sharedManager] imageCache] clearDisk];
[[[SDWebImageManager sharedManager] imageCache] clearMemory];
[[NSURLCache sharedURLCache] removeAllCachedResponses];