目录
引言:Html加载流程
加载流程各节点耗时分析优化
加载流程结构优化
客户端优化
Html加载流程
创建并初始化WebView
下载网页所需资源文件
渲染展示网页
HTML加载流程.png
加载流程各节点耗时分析优化
WebView创建初始化
首次初始化WebView会比第二次初始化慢很多。初始化后,即使WebView已释放,但一些多WebView共用的全局服务/资源对想仍未释放,而第二次初始化不需要生成,因此初始化变快。
1. 提前初始化, 提前预备全局WebView,Application中初始化WebView备用
@Override
public void onCreate() {
// Application中提前初始化WebView
WebView mWebView = new WebView(new MutableContextWrapper(this))
}
注:该方式会增加冷启动时间
2. WebView复用,维护WebView pool,避免每次打开网页创建WebView。
DNS解析耗时
html网页文件获取过程中,首先需要将url链接解析成ip地址,根据ip地址获取到对应html文件。
1. DNS会在系统级别进行缓存,对于WebView的地址,如果使用的域名与原生api的相同,则可直接使用缓存,避免DNS解析耗时。
资源文件下载耗时
弱网情况下,下载网页资源耗时,导致白屏时间过长。
1. 网页资源压缩,并CDN加速处理,缩短请求耗时。
2. 服务端下发填充好首屏数据的网页,作为网页首屏展示,减少网页上数据请求时间。
3. App闲置状态时,下载离线包到本地,加载时优先加载离线包数据。后续更新接收下发的差异包,与当前离线包合并成完整包。
HTML解析耗时
解析html文件,构建DOM树,耗时取决于html节点嵌套复杂程度,与