UIImageView缓存策略 – AFNewtorking

我在我的应用程序中有几个UIImageView,我使用AFNetworking的setImageWithURL从我的服务器填充图像。 文档说这个方法使用标准的UIImageView缓存策略。 我的问题是,如果我更新服务器上的图像,图像不会很快在应用程序中更新。 即使我关闭应用程序并重新启动。 如果我想要更新图像,我必须重新安装应用程序,这将清除缓存并引入新图像。 显然,这对用户来说不是期望的效果。

AFNetworking的缓存是私有的,因此我无法在UIImageView + AFNetworking类别中直接访问它。 有关清除整个应用缓存的想法吗? 我怎么做到这一点?

您可以通过将其复制到接口文件UIImageView+AFNetworking.h轻松访问+ (AFImageCache *)af_sharedImageCache方法。 这将公开singleton NSCache子类。 然后,您可以分别调用– removeObjectForKey:– removeAllObjects来删除图像或所有图像。

如果您不想这样做,请考虑使用NSHTTPURLResponse对象作为密钥缓存图像。 您可以通过在URL中附加一些随机值来创建不同的键(例如,您可以追加?garbage=4H5G789H35G89H )。 但是,这将基本上浪费内存,因为您将缓存永远无法检索的图像。

最后,您可能希望提交增强请求 (或您自己的代码)以公开缓存或使缓存可选。