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

标签 ios swift webview diskcache

我使用 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 资源实现磁盘缓存?

最佳答案

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

关于ios - UIWebView 不会对 loadHTMLString 函数下载的资源使用磁盘缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53627967/

相关文章:

cocoa - 当 WebView 添加到 NSWindow 中的特定 View 时,:hover stops working. 如何修复此问题?

ios - Segue 后向上滚动时 UITableView 滞后

iphone - 阿门 iPhone 测试版应用程序通过浏览器下载?

ios - 通过FacebookSDK.framework登录时未获取电子邮件ID

ios - 无法从可用键盘列表中选择我的自定义键盘

Javascript 在 Android 的 React-Native WebView 中不起作用(设置了 javaScriptEnabled = true)

pdf - Xamarin Forms UWP - 显示 PDF

iphone - 从单词对象的 NSMutableArray 中创建一个干净的单词 NSString,然后用于搜索

ios - 从 Objective C 调用 Swift 中定义的 NSString 扩展

ios - CloudKit 响应时间慢?