UIWebView和WKWebView
Contents
UIWebView和WKWebView
一: UIWebView的优缺点
优点
- 支持缓存和NSURLProtocol拦截
缺点
- 内存泄露
- 加载大数据资源时内存占用大,耗电量高
二: WKWebView的优缺点
优点
- 加载网页速度提升,内存占用低(UIWebView的1/3 ~ 1/4)
- 提供加载网页进度的属性
- 拥有高达60FPS滚动刷新率及内置手势
- 高效的App和web信息交换通道
缺点
- 没有缓存(WKWebsiteDataStore - iOS9之后)
- 不支持NSURLProtocol拦截(可通过私有方法实现桥接)
- 拦截的POST数据不完整基本等于没用
资源代理
- iOS11开始
WKURLSchemeHandler可用来加载自定义资源 - 注意:
- setURLSchemeHandler注册时机只能在WKWebView创建WKWebViewConfiguration时注册。
- WKWebView 只允许开发者拦截自定义 Scheme 的请求,不允许拦截 “http”、“https”、“ftp”、“file” 等的请求,否则会crash。
- WKWebView加载网页前,要在user-agent添加个标志,H5遇到这个标识就使用customScheme,否则就是用原来的http或https。
三: Cookie
- WKWebView 上请求不会自动携带 Cookie ,解决方案是 loadRequest 时,从 NSHTTPCookieStorage 中获取对应的 cookie,通过 WKUserScript 设置到 WKWebView 界面中的 document.cookies 中,
- 注意的是,注入 cookie 的脚本执行时机需要设置为 WKUserScriptInjectionTimeAtDocumentStart 。
四: 跨域
WebKit框架对跨域进行了安全性检查限制,不允许跨域,比如从一个
HTTP页对HTTPS发起请求是无效的(Safari支持)解决办法
- 在该方法中特殊处理
|
|

参考
https://www.jianshu.com/p/90a90bd13aac
iOS App秒开H5优化总结
iOS App秒开H5实战总结
WKWebVIew那些坑

