![](/img/trans.png)
[英]when I use wkwebview to load local html,I find it renders slower than uiwebview
[英]UIWebView VS WKWebView to load local html
我创建了一个带有 500 p 标记的 html 字符串,其中包含时间戳
我使用UIWebView
和WKWebView loadHTMLString:baseURL:
来加载它,并且wkWebView
比UIWebVIew
慢约50% 。 为什么?
UIWebView:0.1681529879570007
WKWebView:0.3913570046424866
WKWebView 可以更快地显示字符串中的 html。 但是,有一个bug让UIWebView默认速度更快,那就是电话号码检测。
使用以下代码运行 viewController, webView
分别是 UIWebView 和 WKWebView 实例,并保持其他所有内容相同,我发现 WKWebView 最多需要 2 秒才能加载,而 UIWebView 几乎立即加载。
webView.loadHTMLString(HtmlStringInstance, baseURL: nil)
到目前为止,我不是唯一一个发现这一点的人:
但是,解决方案很简单:禁用 WKWebView 和 poof 的电话号码检测。 你去吧。
对我来说,创建静态变量以避免多次创建 WKWebView 是有效的。 Objective-C 示例:
- (WKWebView *)webHeaderView
{
static WKWebView *_webHeaderView = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (!_webHeaderView)
{
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
_webHeaderView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
}
});
return _webHeaderView;
}
WKWebView
渲染性能在 WebGL 游戏和运行UIWebView
缺乏的复杂 JavaScript 算法的东西中很明显。
您可以在Github 中检查性能。
为了使WKWebView
更快,禁用 WKWebView 的数据检测器对我有用。 迅捷版:
let webViewCofig = WKWebViewConfiguration()
webViewCofig.dataDetectorTypes = []
webView = WKWebView(frame: view.frame, configuration: webViewCofig)
要启用特定数据检测器,请在设置 dataDetectorTypes 时将特定类型作为 .address、.link 等传递:
config.dataDetectorTypes = [.address]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.