![](/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.