Cache-Control:max-age不会使AFNetworking缓存响应

时间:2015-07-29 05:33:14

标签: ios objective-c caching afnetworking afnetworking-2

在服务器端,我设置了Cache-Control:max-age = 14400。

从我的iOS客户端,我正在设置AFHTTPSessionManager的共享实例,如下所示:

+ (TKClient *)sharedInstance {
static TKClient *instance = nil;
static dispatch_once_t token;

dispatch_once(&token, ^ {
    instance = [[TKClient alloc] initWithBaseURL:[NSURL URLWithString:kTKBaseUrl]];
    [instance setRequestSerializer:[AFJSONRequestSerializer serializer]];
});

return instance;

并按照以下方式调用我的API:

- (void)listingsWithParams:(NSDictionary *)params completion:(void (^)(NSMutableArray *listings, NSError *error))completion {
[self GET:@"api/listings" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
    // success here
} failure:^(NSURLSessionDataTask *task, NSError *error) {
    // error here
}];

我已经验证了此列表调用正在从服务器端正确返回Cache-Control标头。但是,每次呼叫都会转到服务器,而且它显然没有被缓存。知道问题可能是什么?

我是否需要在iOS端配置其他内容,或者以某种方式更改Cache-Control标头?谢谢!

1 个答案:

答案 0 :(得分:1)

尝试添加:

[connectionManager.requestSerializer setCachePolicy:NSURLRequestReturnCacheDataElseLoad];

修改 再次检查标题如果您已完成所有操作,可能会遗漏API上的内容! 也许您应该使用"Cache-Control" = "public, max-age=14400";添加public关键字到Cache-Control标题?

public表示任何缓存都可以缓存响应,即使它通常只能在非共享缓存中进行非缓存或缓存。