UIWebView игнорирует кеш диска?

В моем гибридном приложении я называю веб-ресурс, например, main.css?{timestamp-file-was-modified} и даю ему заголовок кеша максимального возраста на год, чтобы клиенты могли хранить его более или менее вечно.

Однако в моем приложении для iOS происходит то, что UIWebView учитывает заголовок кеша в течение всего времени существования приложения, т. е. когда я загружаю новую страницу, которая также включает main.css?{same-timestamp}, она даже не будет пытаться выполнить повторную проверку, поскольку знает, что имеет право файл в кеше. НО, при новом запуске приложения (после того, как его убили или устройство было выключено) UIWebView снова извлекает все ресурсы, игнорируя кеш. Я проверил это через Charles Proxy, чтобы убедиться, что это так.

Я заглянул в SQlite cache.db и увидел, что main.css?{same-timestamp} там есть, но UIWebView все равно не загружает его из кеша, в результате чего начальная загрузка страницы происходит значительно медленнее, чем могла бы быть.

Я пробовал это на iPhone с iOS 8.4 и iPad с iOS 8.2. Тот же результат.

Любые идеи?


person andrrs    schedule 05.08.2015    source источник


Ответы (1)


Если вам действительно нравится управлять кешем, вы можете зарегистрировать свой собственный подкласс NSURLProtocol в делегате, а затем, используя - (void)startLoading, вы можете загружать что-либо из локального хранилища.

person Psychomentality    schedule 28.09.2015