美文网首页
SDWebImage的URL不变,服务器更新图片,本地不更新的问

SDWebImage的URL不变,服务器更新图片,本地不更新的问

作者: HuaJianDev | 来源:发表于2017-06-20 09:56 被阅读94次

    在少数情况下,服务器修改了图片后不会变更相应的URL,也就是说图片本身的内容变了然而它的URL没有变化,那么按照对SDWebImage的常规使用方法的话,客户端肯定更新不到同一URL对应到服务器已变更的图片内容。所以就需要对SDWebImage做一些处理。

    我们就可以在诸如AppDelegate didFinishLaunching的地方追加如下代码

    SDWebImageDownloader *imgDownloader = SDWebImageManager.sharedManager.imageDownloader;
        imgDownloader.headersFilter  = ^NSDictionary *(NSURL *url, NSDictionary *headers) {
            
            NSFileManager *fm = [[NSFileManager alloc] init];
            NSString *imgKey = [SDWebImageManager.sharedManager cacheKeyForURL:url];
            NSString *imgPath = [SDWebImageManager.sharedManager.imageCache defaultCachePathForKey:imgKey];
            NSDictionary *fileAttr = [fm attributesOfItemAtPath:imgPath error:nil];
            
            NSMutableDictionary *mutableHeaders = [headers mutableCopy];
            
            NSDate *lastModifiedDate = nil;
            
            if (fileAttr.count > 0) {
                if (fileAttr.count > 0) {
                    lastModifiedDate = (NSDate *)fileAttr[NSFileModificationDate];
                }
                
            }
            NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
            formatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
            formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
            formatter.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss z";
            
            NSString *lastModifiedStr = [formatter stringFromDate:lastModifiedDate];
            lastModifiedStr = lastModifiedStr.length > 0 ? lastModifiedStr : @"";
            [mutableHeaders setValue:lastModifiedStr forKey:@"If-Modified-Since"];  
            
            return mutableHeaders;  
        };
    
    

    然后在相需要加载图片的地方正常使用下面语句就好了

    [ImageView sd_setImageWithURL:[NSURL URLWithString:urlStr] placeholderImage:[UIImage imageNamed:@""] options:SDWebImageRefreshCached];
    

    相关文章

      网友评论

          本文标题:SDWebImage的URL不变,服务器更新图片,本地不更新的问

          本文链接:https://www.haomeiwen.com/subject/yrroqxtx.html