UIWebView 不会对 loadHTMLString 函数下载的资源使用磁盘缓存



我通过带有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资源实现磁盘缓存呢?

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

最新更新