带有缓存策略的 AFHTTPSessionManager 不起作用

Posted

技术标签:

【中文标题】带有缓存策略的 AFHTTPSessionManager 不起作用【英文标题】:AFHTTPSessionManager with Cache Policy not working 【发布时间】:2015-08-18 13:26:26 【问题描述】:

服务器发送缓存头作为响应。

"Cache-Control": "max-age=120, public"

首先我将 NSURLRequestReturnCacheDataElseLoad 与 AFHTTPRequestOperation 一起使用。

通过在 AppDelegate 中设置共享缓存并在 NSUrlRequest 中设置 NSURLRequestReturnCacheDataElseLoad。

效果很好。

但是当我尝试通过以下方式设置 NSURLRequestReturnCacheDataElseLoad 对 AFHTTPSessionManager 执行相同操作时,

1.request.session.configuration.requestCachePolicy

2.request.requestSerializer.cachePolicy

3.重写-(NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLResponse *, id, NSError *))completionHandler

似乎没有任何效果。

AFNetworking 版本 - 2.5.1

【问题讨论】:

哪个版本的afnetworking? afnetworking 2.5.1版 【参考方案1】:

我遇到了同样的问题,经过几个小时的搜索,我发现 AFHTTPSessionManager 使用 cookie 来缓存请求。

只需删除所有 cookie 即可。

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *cookie in [storage cookies]) 
        [storage deleteCookie:cookie];
    

【讨论】:

以上是关于带有缓存策略的 AFHTTPSessionManager 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

google 的缓存策略将 api 放置在结果附近。

解决浏览器缓存导致页面非最新的小技巧

多级缓存的分层架构

聊聊缓存回收策略跟缓存更新策略

缓存策略的选择

iOS web缓存策略以及手动清除缓存