SDWebImageRefreshCached

異步加載圖片方法:

- (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];


不過這裏要特別注意一下,在IOS7中你會發現使用這兩個方法緩存總清除不乾淨,即使斷網下還是會有數據。這是因爲在IOS7中,緩存機制做了修改,使用上述兩個方法只清除了SDWebImage的緩存,沒有清除系統的緩存,所以我們可以在清除緩存的代理中額外添加以下:

[[NSURLCache sharedURLCache] removeAllCachedResponses];


發佈了40 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章