WKWebView 使用 swift 在 iOS 9 中加载 HTML 内容的速度太慢
WKWebView loads HTML content too slowly in iOS 9 using swift
我一直在尝试将WKWebView
集成为UIViewController中另一个webview
的子视图。我已经能够加载内容并与swift
和JavaScript
正确通信。但是,在没有任何数据操作的情况下,HTML
内容的加载时间接近 2 秒。
我还测试了在没有加载任何脚本的情况下仅使用空的HTML
体加载WKWebView
。这仍然需要 600 毫秒来加载。
viewDidLoad
和webView
之间的时间差异(webView
:WKWebView
,didFinish导航:WKNavigation!** 是 600 毫秒,如果即使 HTML 也包含一个空的正文。
控制器的视图加载函数
override func viewDidLoad() {
NSLog("started - %@.%@", String(self.dynamicType), __FUNCTION__)
super.viewDidLoad()
let wkConfiguration: WKWebViewConfiguration = WKWebViewConfiguration()
let userController: WKUserContentController = WKUserContentController()
wkConfiguration.userContentController = userController
wkConfiguration.processPool = VCWKWebView.wkProcess
self.wkWebView = VCWKWebView(frame: self.webView.bounds,configuration: wkConfiguration)
if let wkWebView = self.wkWebView {
self.webView.addSubview(wkWebView)
wkWebView.translatesAutoresizingMaskIntoConstraints = false
let height = NSLayoutConstraint(item: wkWebView, attribute: .Height, relatedBy: .Equal, toItem: self.webView, attribute: .Height, multiplier: 1, constant: 0)
let width = NSLayoutConstraint(item: wkWebView, attribute: .Width, relatedBy: .Equal, toItem: self.webView, attribute: .Width, multiplier: 1, constant: 0)
webView.addConstraints([height, width])
//wkWebView.delegate = self
wkWebView.navigationDelegate = self
wkWebView.loadContent()
}
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
NSLog("ended - %@.%@", String(self.dynamicType), __FUNCTION__)
}
VCWKWebView class:
class VCWKWebView: WKWebView {
static let wkProcess: WKProcessPool = WKProcessPool()
private static let _url: NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("index", ofType: "html",inDirectory:"www")!)
private static let _accessUrl: NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("www", ofType: nil)!)
func loadContent(){
NSLog("started - %@.%@", String(self.dynamicType), __FUNCTION__)
if #available(iOS 9.0, *) {
self.loadFileURL(VCWKWebView._url, allowingReadAccessToURL: VCWKWebView._accessUrl)
} else {
// Fallback on earlier versions
}
NSLog("ended - %@.%@", String(self.dynamicType), __FUNCTION__)
}
override init(frame: CGRect, configuration: WKWebViewConfiguration) {
super.init(frame:frame, configuration:configuration)
}
convenience init(frame: CGRect){
let wkConfiguration: WKWebViewConfiguration = WKWebViewConfiguration()
self.init(frame:frame,configuration:wkConfiguration)
}
deinit{
print("deinit of VCWKWebView is called")
}
}
我认为有两种方法。
#1.优化您的 HTML、CSS 和 JavaScript 代码。
#2.您需要实现 WKWebView 委托函数。并且您需要在加载Web视图内容后显示Web视图内容。
这通常是因为渲染网页时使用的CSS。这是本地加载页面时的默认行为。我们还可以考虑,在第一次加载中,UIWebview 没有缓存,并为该页面创建缓存。
请分享您的 html 部分,以便我检查
相关文章:
- 我想放慢html中进程栏的速度
- Html画布绘制速度因画布元素过多而减慢
- 拥有多个 HTML 页面通常使用的单独 javascript 文件是否会加快页面加载速度
- 如何在HTML / JavaScript中加快本地文件系统中大图像的显示速度
- 如何在互联网速度慢时显示基本的html页面
- 使图像加载速度更快 HTML
- WKWebView 使用 swift 在 iOS 9 中加载 HTML 内容的速度太慢
- HTML 包含多行的表的多级展开折叠速度很慢
- Sencha Touch大型HTML渲染速度很慢
- 从 Javascript 类生成多个 HTML 模板时对速度/性能的影响
- 使脚本加载速度快于html内容
- 放慢html锚链接的速度
- 安卓设备上的JavaScript/HTML/CSS应用程序-速度非常慢
- jQuery自动页面滚动与HTML滑块控制动画速度
- 哪一种浏览速度更快?从不同的网站下载不同的图片/一个网站为一个网页's图片[HTML/PHP]
- HTML画布以恒定的速度在一个方向上移动一个对象
- Html 5 canvas提高了速度
- 缓存html .load结果以加快加载速度
- 画布上的堆叠框html 5有它的工作可以't计算出网格阵列和速度的微小修正
- android上的自定义html/javascript键盘速度太慢