AFHTTPRequestOperation скачать файл и кеш

Я использую фреймворк SDWebImage в качестве отличной библиотеки, которая также хранит изображения и кэши,

сейчас я пытаюсь загрузить файлы другого типа, и SDWebImage сейчас не полезен.

я использую AFHTTPRequestOperation загрузить файл, и он загружается правильно,

NSURL *url = [NSURL URLWithString:@"http://mydomain/file.zip"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

NSString *fullPath = [NSTemporaryDirectory() stringByAppendingPathComponent:[url lastPathComponent]];

[operation setOutputStream:[NSOutputStream outputStreamToFileAtPath:fullPath append:NO]];

[operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
    NSLog(@"bytesRead: %u, totalBytesRead: %lld, totalBytesExpectedToRead: %lld", bytesRead, totalBytesRead, totalBytesExpectedToRead);
}];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    NSLog(@"RES: %@", [[[operation response] allHeaderFields] description]);

    NSError *error;
    NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:fullPath error:&error];

    if (error) {
        NSLog(@"ERR: %@", [error description]);
    } else {
        NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
        long long fileSize = [fileSizeNumber longLongValue];
        NSLog(@"OK");

    }


} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"ERR: %@", [error description]);
}];

[operation start];

но я хочу использовать кеш, и он загружается всегда и не использует кеш, сервер отвечает заголовок так:

RES: {
    "Accept-Ranges" = bytes;
    "Content-Length" = 2866793;
    "Content-Type" = "application/vnd.apple.pkpass";
    Date = "Fri, 22 Aug 2014 09:10:11 GMT";
    Etag = "\"d9c347d85aabcf1:0\"";
    "Last-Modified" = "Tue, 29 Jul 2014 18:28:08 GMT";
    Server = "Microsoft-IIS/7.5";
    "X-Powered-By" = "ASP.NET";
}

не хватает ли силы AFHTTPRequest использовать кеш? или там любая доступная библиотека, как SDWebImage для любых других типов файлов?

2 ответа

Согласно Кэшированию в AFNetworking 2.0, вам необходимо добавить cache-control HTTP заголовок.

Попробуйте использовать этот параметр:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
Другие вопросы по тегам