AFNetworking + UIImageView中的缓存不遵守任何http缓存策略?(希望我错了)

Fra*_*gle 11 caching ios afnetworking

好像我打电话给:

setImageWithURLRequest:(NSURLRequest *)urlRequest
              placeholderImage:(UIImage *)placeholderImage
                       success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
                       failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure
Run Code Online (Sandbox Code Playgroud)

生成的图像将被放入AFNetworking的AFImageCache中,无论HTTP响应头中是否设置了任何缓存策略,并且在后续对同一URL的请求中,无论年龄大小,都将保留在那里并从那里获取.

那是准确的吗?

强制它忽略缓存的唯一因素是设置NSURLRequestReloadIgnoringCacheDataNSURLRequestReloadIgnoringLocalAndRemoteCacheData在请求中(通过AFNetworking重新缓存生成的图像的方式,这是强制它刷新缓存的一种方法).

现在,确定AFImageCache没有返回命中,然后AFNetworking(我认为),对于一个请求,使用Apple的默认NSURLCache,理论上它确实尊重http缓存头.但这只是一个请求,因为AFNetworking会将结果抛出到自己的永久性非http感知缓存中.

如果我错了或遗漏任何东西,请告诉我.

Fra*_*gle 3

据 AFNetworking 的开发人员 Matt 介绍,解决方案是通过将共享图像缓存设置为另一个符合 AFImageCache 协议的类来覆盖该行为。https://github.com/AFNetworking/AFNetworking/issues/2731