Часть моего приложения кэширует веб-страницы для автономного просмотра. Для этого я сохраняю HTML, извлеченный из сайта, и переписываю URL-адреса img, чтобы указать на файл в локальном хранилище. Когда я загружаю html в UIWebView, он загружает изображения, как ожидалось, и все в порядке. Таким образом, я также кэширую таблицы стилей.
Проблема заключается в том, что, когда я помещаю телефон в режим самолета, загрузка этого кэшированного html заставляет UIWebView отображать пустой экран и приостанавливать какое-то время перед отображением страницы. Я выяснил, что это вызвано не кэшированными URL-адресами, указанными в исходном HTML-документе, который пытается просмотреть веб-представление. Эти другие URL-адреса включают изображения в кэшированных таблицах стилей, содержимое в iframe и javascript, которые открывают соединение для извлечения других ресурсов. Пауза происходит, когда UIWebView пытается извлечь эти ресурсы, и веб-страница появляется только после истечения всех этих других изъятий.
Мои вопросы: как я могу заставить UIWebView отображать только то, что я кэшировал немедленно? Вот мои мысли:
- напишите еще больше кода для кэширования этих других ссылок. Это потенциально более тонкий код, чтобы поймать все крайние случаи и т.д., Особенно для того, чтобы проанализировать Javascript, чтобы увидеть, что он загружает после загрузки страницы.
- заставить UIWebView немедленно отключиться, чтобы пауза не была. Я не понял, как это сделать.
- каким-то образом получить то, что уже загружено для отображения, даже если внешние ссылки еще не завершили выборку
- разделите код всех скриптов, тегов ссылок и фреймов на "стереть" внешние ссылки. Я пробовал это, но для некоторых сайтов результирующая страница сильно перепуталась.
Может ли кто-нибудь помочь мне здесь? Я работаю над этим навсегда, и у меня заканчиваются идеи.