Установка NSURLRequestCachePolicy и NSURLSession
Я создаю NSURLSession
с sessionConfiguration, где я явно установил requestCachePolicy
а также URLCache
,
sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfiguration.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
sessionConfiguration.URLCache = [NSURLCache sharedURLCache];
Запрос создается и передается в качестве аргумента в NSURLSession
dataTaskWithRequest:CompletionHandler:
метод. Запрос построен так:
request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:kAENServiceNetworkTimeout];
Проблема 1:
Настроить так, нет fsCachedData
Папка создается на диске, а кэшированные данные не используются. Если запрос создан просто с помощью:
request = [NSMutableURLRequest requestWithURL:url];
Кеш создается на диске, а образ используется как положено. Это ошибка в коде Apple?
Проблема 2:
Ни в одном из этих случаев URLSession:dataTask:willCacheResponse:completionHandler:
Метод делегата вызван. Находятся ли в их ситуациях такие ситуации?
Обновить:
Я отправил пример проекта на Github, https://github.com/mattmorton/cache-testing
1 ответ
Проблема 1:
Я думаю, что мое понимание NSURLRequestReturnCacheDataElseLoad было неверным. В этом случае ответ не кэшируется.
Проблема 2:
Из заголовка Apple для NSURLSession в категории NSURLSessionAsynchronousConvenience:
удобные методы обработки данных... создают задачи, которые обходят обычные вызовы делегатов для ответа и доставки данных, и предоставляют простой отменяемый асинхронный интерфейс для приема данных.
Я использую обработчик вспомогательного метода, поэтому метод делегата не вызывается.