AFNetworking+UIImageView 中的缓存不遵守任何 http 缓存策略? (希望我错了)
Caching in AFNetworking+UIImageView doesn't respect any http cache policy? (hopefully I'm wrong)
看来如果我调用:
setImageWithURLRequest:(NSURLRequest *)urlRequest
placeholderImage:(UIImage *)placeholderImage
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure
无论 HTTP 响应中设置的任何缓存策略如何,生成的图像都将放入 AFNetworking 的 AFImageCache headers,并且无论年龄如何,在后续请求相同 URL.
准确吗?
唯一强制它忽略缓存的方法是在请求中设置 NSURLRequestReloadIgnoringCacheData
或 NSURLRequestReloadIgnoringLocalAndRemoteCacheData
(顺便说一下,结果图像将通过 AFNetworking 获得 re-cached,所以这是强制它刷新缓存的一种方法。
现在,确定如果 AFImageCache returns 没有命中,那么 AFNetworking 将(我认为)对于一个请求,使用 Apple 的默认 NSURLCache,理论上它确实尊重 http 缓存 headers。但这只是一个请求,因为 AFNetworking 会将结果放入其自己的永久 non-http 感知缓存中。
如果我做错了或遗漏了什么,请告诉我。
根据 AFNetworking 的开发人员 Matt 的说法,此问题的解决方案是通过将共享图像缓存设置为另一个符合 AFImageCache 协议的 class 来覆盖该行为。 https://github.com/AFNetworking/AFNetworking/issues/2731
看来如果我调用:
setImageWithURLRequest:(NSURLRequest *)urlRequest
placeholderImage:(UIImage *)placeholderImage
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure
无论 HTTP 响应中设置的任何缓存策略如何,生成的图像都将放入 AFNetworking 的 AFImageCache headers,并且无论年龄如何,在后续请求相同 URL.
准确吗?
唯一强制它忽略缓存的方法是在请求中设置 NSURLRequestReloadIgnoringCacheData
或 NSURLRequestReloadIgnoringLocalAndRemoteCacheData
(顺便说一下,结果图像将通过 AFNetworking 获得 re-cached,所以这是强制它刷新缓存的一种方法。
现在,确定如果 AFImageCache returns 没有命中,那么 AFNetworking 将(我认为)对于一个请求,使用 Apple 的默认 NSURLCache,理论上它确实尊重 http 缓存 headers。但这只是一个请求,因为 AFNetworking 会将结果放入其自己的永久 non-http 感知缓存中。
如果我做错了或遗漏了什么,请告诉我。
根据 AFNetworking 的开发人员 Matt 的说法,此问题的解决方案是通过将共享图像缓存设置为另一个符合 AFImageCache 协议的 class 来覆盖该行为。 https://github.com/AFNetworking/AFNetworking/issues/2731