UIWebView не будет использовать кеширование диска для ресурсов, загруженных функцией loadHTMLString
Я загружаю HTML-коды в свой UIWebView через строки HTML с функцией loadHTMLString. На этих HTML-страницах есть те же 1,5 МБ файлов шрифтов. После первой загрузки шрифтов он использует их из оперативной памяти, согласно статистике использования сотовых данных. Однако, когда я выключаю приложение из диспетчера задач, снова запускаю и загружаю UIWebView, эти шрифты снова перезагружаются.
Я попробовал запустить коды ниже, но не повезло. Это:
URLCache.shared.memoryCapacity = 40 * 1024 * 1024
URLCache.shared.diskCapacity = 50 * 1024 * 1024
И это:
let memoryCapacity = 40 * 1024 * 1024
let diskCapacity = 50 * 1024 * 1024
let cache = URLCache(memoryCapacity: memoryCapacity, diskCapacity: diskCapacity, diskPath: nil)
URLCache.shared = cache
Итак, как я могу добиться кэширования диска для ресурсов UIWebViews, которые загружают свое HTML-содержимое с помощью функции loadHTMLString, а не loadRequest?
1 ответ
Вы могли бы реализовать собственный протокол кэширования, который перехватывает все веб-запросы, сделанные приложением (включая веб-просмотр) - сохранять содержимое вручную на диск в тот момент, по URL-адресу, для которого он был запрошен, затем при загрузке строки HTML, которую вы Выразите пути, которые будут загружены в эту строку, и поменяйте их местными путями, если есть кэшированное содержимое. Я должен был сделать это на моем старом месте - не уверен, есть ли более чистый способ сделать это (обратите внимание - этот подход не работает, если вы решите использовать WKWebView).