Я тестировал контроллер представления iPhone, который использует UIWebView для загрузки внешнего контента, в отличие от ресурсов в пакете проектов. Другой инженер заметил, что веб-представление вообще не кэшировалось, поэтому я занялся некоторыми исследованиями. Некоторые старые вопросы указывали, что UIWebView просто не может кэшировать внешний контент.
Предыдущие SO-запросы в кэшировании UIWebView:
- Можно ли кэшировать ресурсы, загруженные в iPhone UIWebView?
- Возможно ли кэшировать веб-страницы с помощью UIWebView?
- Чтение содержимого HTML из UIWebView
Эти сообщения были довольно дефлирующими, но я заметил, что их все спросили до выхода iOS 4.0. Я проверил следующий подход для кэширования, который выглядел довольно прямолинейно.
NSURLRequest *request = [NSURLRequest requestWithURL:myUrl
cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30];
[webView loadRequest:request];
Это, похоже, отлично работает на iOS 4.3, но совсем не работает на iOS 3.0. Я проверил это, указав устройства на прокси-сервер Charles (на iPhone, Настройки → WiFi, ручной прокси) и запись трафика на мой сервер.
Запустил ли UIWebView политику кэширования в iOS 4.0? Может ли кто-нибудь подтвердить это или я просто представляю вещи?