如何清除AFNetworking中的图像缓存或任何缓存?

Dhe*_*eti 10 objective-c ios afnetworking

大家好,任何人都可以帮我解决如何清除AFNetworking中的缓存.

我曾经有旧版本的AFNetworking,我看到它已经更新,任何机构都可以帮我解决如何清理AFnetworking的缓存.

以前它是这样的

SDImageCache *imageCache = [SDImageCache sharedImageCache];
[imageCache clearMemory];
[imageCache clearDisk];
[imageCache cleanDisk];
Run Code Online (Sandbox Code Playgroud)

bac*_*onk 16

如果您正在使用AFNetworking,我最近实施了一些解决方法来从缓存中删除图像.

查看文件"UIImageView + AFNetworking.h"

@interface UIImageView (AFNetworking),添加以下内容:

- (void)clearImageCacheForURL:(NSURL *)url;

并在@protocol AFImageCache,添加:

- (void)clearCachedRequest:(NSURLRequest *)request;

接下来,打开"UIImageView + AFNetworking.m"

@implementation UIImageView (AFNetworking),添加以下内容:

- (void)clearImageCacheForURL:(NSURL *)url {
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request addValue:@"image/*" forHTTPHeaderField:@"Accept"];

    UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:request];
    if (cachedImage) {
        [[[self class] sharedImageCache] clearCachedRequest:request];
    }
}
Run Code Online (Sandbox Code Playgroud)

几乎完成了!现在只需添加以下内容@implementation AFImageCache:

- (void)clearCachedRequest:(NSURLRequest *)request {
    if (request) {
        [self removeObjectForKey:AFImageCacheKeyFromURLRequest(request)];
    }
}
Run Code Online (Sandbox Code Playgroud)

你很高兴去!现在,当您需要从缓存中清除特定的图像URL时,只需调用即可[imageView clearImageCacheForURL:imgURL];


Stu*_*rtM 6

https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ

AFNetworking是否内置了任何缓存机制?

AFNetworking利用NSURLCache及其任何子类已经提供的缓存功能.

我们建议您尝试使用Pete Steinberger的SDURLCache分支,它提供磁盘缓存,而iOS上的NSURLCache则无法实现.对于SDURLCache实例,您可能会发现将ignoreMemoryOnlyStoragePolicy设置为YES很有用,这将确保将图像更一致地缓存到磁盘以供脱机使用(如SDURLCache README中报告的那样,iOS 5支持,但仅适用于http,因此如果你想支持iOS 4或https,它仍然是一个不错的选择)

我还会看到这个问题: 如何禁用AFNetworking缓存

还有: AFNetworking和缓存

激活NSURLCache的那一刻,您可以指定它的最大大小.您还可以通过调用removeAllCachedResponses或removeCachedResponsesForRequest方法来清除缓存.

希望能帮助到你.