SDWebImage-Webピクチャキャッシュ

3552 ワード

https://github.com/rs/SDWebImage 14000 + star
1、ネットのピクチャーに対してローカルキャッシュを行って、非同期にロードして、ピクチャーの取得を最適化して、みんなはすべて約束します.2、まずurlピクチャに対してローカルが存在するかどうかを判断し、直接使用しているか、ネットワークピクチャを使用しているかどうかを判断し、urlをkeyとしてローカル(ディスク、メモリ)に保存する3、ディスクを保存するクリーンアップがずっと存在し、メモリを保存する可能性がシステムによって明らかになる.
一般
  • 1最もよく使われる
  • //          ,                  。
        [imageView sd_setImageWithURL:[NSURL URLWithString:url2]
                     placeholderImage:[UIImage imageNamed:@"placeholderImage"]];
    
  • 2 buttonでも
  •     [button sd_setImageWithURL:[NSURL URLWithString:url2]
                          forState:UIControlStateNormal
                  placeholderImage:[UIImage imageNamed:@"placeholderImage"]];
    

    じこけっていキャッシュ
  • 1メモリに
  • が存在するかどうか
            UIImage *memoryImage = [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:url1];
    
        if (memoryImage) {
            // do
        }
    
  • 2キャッシュ全体が存在するかどうか(メモリを確認してからディスクを確認)
  • .
        UIImage *cacheImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:url1];
    
        if (cacheImage) {
            // do
        }
    

    キャッシュのクリア
  • 1取得キャッシュサイズ
  •     NSInteger imageCacheByte = [[SDImageCache sharedImageCache] getSize];
        NSLog(@"%zi",imageCacheByte);
        
        
        [[SDImageCache sharedImageCache] calculateSizeWithCompletionBlock:^(NSUInteger fileCount, NSUInteger totalSize) {
            NSLog(@"  %zi   , %fM",fileCount,totalSize/1024./1024.);
        }];
    
  • 2清掃(進捗バーを作って、さもなくば清掃が速すぎる)
  •     [[SDImageCache sharedImageCache] clearDisk];//   
        [[SDImageCache sharedImageCache] clearMemory];//   
    
        [[SDImageCache sharedImageCache] removeImageForKey:url1];//     
    

    ダウンロードの進行状況
  • 1一般ダウンロード
  •     SDWebImageManager *manager = [SDWebImageManager sharedManager];
        [manager downloadImageWithURL:[NSURL URLWithString:url2]
                              options:0
                             progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                                 //        ,    
                                 NSLog(@"%zi,%zi",receivedSize,expectedSize);
                                 
                             } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
                                if (image) {
                                    // do something with image
                                }
                            }];
    
  • 2非同期ダウンロード
  •     SDWebImageDownloader *downloader = [SDWebImageDownloader sharedDownloader];
        [downloader downloadImageWithURL:[NSURL URLWithString:url2]
                                 options:0
                                progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                                    // progression tracking code
                                }
                               completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
                                   if (image && finished) {
                                       // do something with image
                                   }
                               }];
    

    ローカルキャッシュの強制リフレッシュ
    [imageView sd_setImageWithURL:[NSURL URLWithString:@"https://graph.facebook.com/olivier.poitrey/picture"]
                     placeholderImage:[UIImage imageNamed:@"avatar-placeholder.png"]
                              options:SDWebImageRefreshCached];
    

    1