在App的开发过程当中,随着业务的发展,愈来愈多的公司会选择内嵌 WebView,可是便利性的同时,WebView 的性能却有着很大的问题,备受争议。 做为移动开发者应该从哪些方面去优化webView就一个很值得研究的话题。前端
咱们从App中打开一个网页,到网页所有加载和渲染和显示完展示出来所须要花费得时间要比native长很多,这中间经历的阶段大体以下:web
在这几个阶段中网页会经历从无反馈、白屏、正在加载,对用户的使用体验是不好的。后端
要对webView进行性能优化 应该针对性的对以上几个阶段所消耗的时间进行优化。浏览器
当在App中第一次打开一个网页,系统首先作的并非直接创建链接,而是启 动浏览器内核。因此第一次webView的初始化要花费大量时间。缓存
提早初始化webview能够分为:性能优化
当App刚启动时就初始化全局webView并隐藏,当用户访问了webView时,直接使用这个 webView加载对应网页。缺点是须要额外消耗内存。还有须要webView切换时须要清除页面痕迹,容易形成内存泄漏。服务器
App启动后。在webView的缓冲池初始化多个webView。须要加载网页时能够去缓冲池中去取出新的webView。不须要时就能够直接销毁,同时初始化新的webView放进缓冲池中。缺点是相比而言须要更大的额外内存消耗。可是确保减小webView初始化消耗的时间和下降清除页面所形成的内存泄漏网络
在初始化的同时,经过 Native 来完成一些网络请求等过程,而后在回传给WebView,使得 WebView初始化不是彻底的阻塞后续过程。框架
在创建链接过程当中主要消耗时间:性能
一般状况下,CSS 不会阻塞 HTML 的解析,但若是 CSS 后面有 JS,则会阻 塞 JS 的执行直到 CSS 加载完成(即使 JS 是内联的脚本),从而间接阻塞 HTML 的 解析。
1.CSS 的加载会在 HTML 解析到 CSS 的标签时开始,因此 CSS 的标签要尽 量靠前。 2.可是,CSS 连接下面不能有任何的 JS 标签(包括很简单的内联 JS),不然会 阻塞 HTML 的解析。 3.若是必需要在头部增长内联脚本,必定要放在 CSS 标签以前。