最近使用了AFN框架进行http访问,但是发现content-type是text/plain的返回时,内容并没有更改,仍旧是旧内容.
于是判断是AFN导致了缓存.
解决办法是加上强制缓存清除:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
参考: https://www.jianshu.com/p/609d04617dd5
无意间看到,收藏一下:
网络正常的情况下,如果服务器宕机或者数据库出错,会造成访问服务器报错的情况,一般报错的内容是:无法连接到服务器或者其它错误。且服务器 修复后,仍然报错。经过排查,终于找出了原因所在:AFNetworking会将Url的Response缓存,方便离线浏览。而且这是默认存在的,无论 是1.x还是2.x版本都存在。
问题就出在这,一旦Response被缓存后,下次不再重复发起连接,将直接将同样地Response返回,也就是说:网络正常的情况下,服务 器出错,一旦服务器出错的Response被缓存,就算服务器紧急修复后,也有可能造成iOS客户端持续报错。这种情况将是致命的。
解决方案:
幸运的是,AFNetworking利用的系统自有类存储,我们可以修改其源代码:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
**补充,即使加上清缓存这个方法,也不能解决没有网络也能call url的问题,只能在外面包一层网络状态判断