美文网首页
AFNNetworking的get请求的缓存机制

AFNNetworking的get请求的缓存机制

作者: Lightoflife | 来源:发表于2019-06-09 19:43 被阅读0次

    问题描述:由于使用post请求接口报405,于是改成get请求,但是App的热更新出现bug,于是各种谷歌。

    分析原因:get请求在客户端首次请求后,把数据都缓存下来了,第二次启动App时候先从缓存中取数据,不会从服务器请求,导致热更新不了

    解决方法:

    添加以下一行代码

    /**设置相应的缓存策略*/

    //忽略本地缓存,重新想服务器请求数据

    self.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;

    整理一些关于AFNNetworking缓存策略的资料

    1> NSURLRequestUseProtocolCachePolicy = 0, 默认的缓存策略, 如果缓存不存在,直接从服务端获取。如果缓存存在,会根据response中的Cache-Control字段判断下一步操作,如: Cache-Control字段为must-revalidata, 则询问服务端该数据是否有更新,无更新的话直接返回给用户缓存数据,若已更新,则请求服务端.

    2> NSURLRequestReloadIgnoringLocalCacheData = 1, 忽略本地缓存数据,直接请求服务端.

    3> NSURLRequestIgnoringLocalAndRemoteCacheData = 4, 忽略本地缓存,代理服务器以及其他中介,直接请求源服务端.

    4> NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData

    5> NSURLRequestReturnCacheDataElseLoad = 2, 有缓存就使用,不管其有效性(即忽略Cache-Control字段), 无则请求服务端.

    6> NSURLRequestReturnCacheDataDontLoad = 3, 死活加载本地缓存. 没有就失败. (确定当前无网络时使用)

    7> NSURLRequestReloadRevalidatingCacheData = 5, 缓存数据必须得得到服务端确认有效才使用(貌似是NSURLRequestUseProtocolCachePolicy中的一种情况)

    Tips: URL Loading System默认只支持如下5中协议: 其中只有http://和https://才有缓存策略.

    (1) http://

    (2) https://

    (3) ftp://

    (4) file://

    (5) data://

    参考链接:https://www.jianshu.com/p/e39b91e58fcf

    相关文章

      网友评论

          本文标题:AFNNetworking的get请求的缓存机制

          本文链接:https://www.haomeiwen.com/subject/hfonxctx.html