UIWebView не будет использовать кеширование диска для ресурсов, загруженных функцией loadHTMLString - PullRequest
0 голосов
/ 05 декабря 2018

Я загружаю 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 Ответ

0 голосов
/ 05 декабря 2018

Вы могли бы реализовать собственный протокол кэширования, который будет отлавливать все веб-запросы, сделанные приложением (включая веб-просмотр) - сохранять содержимое вручную на диск в тот момент, с которого он был запрошен, а затем при загрузкеВ HTML-строке вы определяете пути, которые будут загружены в эту строку, и меняете их местными путями, если есть кэшированный контент.Я должен был сделать это на моем старом месте - не уверен, есть ли более чистый способ сделать это (обратите внимание - этот подход не работает, если вы решите использовать WKWebView).

...