Я создаю приложение для iOS, используя Cordova/Phonegap, которое в основном имеет UIWebView и загружает мое веб-приложение из внешнего ресурса. (iOS6+)
Для запуска этого веб-приложения требуется HTML-код размером 450 КБ, и я хочу, чтобы этот файл кэшировался, когда в нем нет изменений. (меняется каждую неделю)
Для этого я настраиваю NSURLCache в своем AppDelegate во время инициализации:
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024
diskCapacity:20 * 1024 * 1024
diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];
После загрузки приложения файлы теперь кэшируются, и я могу найти их в Library/Caches/APPName/fsCachedData.
Я использую CharlesProxy для просмотра запросов, и если приложение загружается один раз, все перезагрузки возвращают 304, не изменено, в этот файл.
Вот в чем проблема
Каждый раз, когда я открываю приложение iOS, хотя файл находится в папке кеша, оно снова загружает его с сервера и сохраняет самую последнюю версию; If-modified-since устанавливается не в параметр запроса в первом запросе после открытия, а в следующих.
Я не уверен, нужно ли мне явно просить Xcode загрузить NSURLCache с диска, или я неправильно его устанавливаю.
Может ли кто-нибудь увидеть проблему в процессе?
Больше информации:
Управление кэшем частное, max-age=31536000, необходимо пройти повторную проверку. NSURLRequest cachePolicy — это NSURLRequestUseProtocolCachePolicy.
Спасибо!