0

我通过带有 loadHTMLString 函数的 HTML 字符串将 HTML 代码加载到我的 UIWebView 中。这些 HTML 页面中有相同的 1.5 MB 字体文件。根据蜂窝数据使用统计数据,第一次下载字体后,它会从 RAM 中使用它们。但是,当我从任务管理器关闭应用程序,再次启动并加载 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

那么,如何为通过 loadHTMLString 函数而不是 loadRequest 加载其 HTML 内容的 UIWebViews 资源实现磁盘缓存?

4

1 回答 1

2

您可以实现一个自定义缓存协议,该协议捕获应用程序(包括 webview)发出的所有 Web 请求 - 将内容手动存储到磁盘上,然后根据请求的 URL,然后当您加载 HTML 字符串时正则表达式将在该字符串中加载的路径,如果有缓存的内容,则将它们交换为本地路径。我不得不在我原来的地方做这件事——不确定是否有更清洁的方法来做(注意——如果你决定使用 WKWebView,这种方法就不起作用)

于 2018-12-05T09:16:50.260 回答