前言
由于目前的工作中,原生app大量嵌入h5页面,很多的功能需要h5来实现,但是由于h5需要从网络加载,在弱网状态或者请求资源大的时候必然出现白屏,再网上搜索后发现并没有一个通用的解决方案,其中VasSonic(手Q的解决方案)侵入性太大,需要整个框架更换成本太大,经过一段时间的实践特总结优化的思路。
总结下主要优化的地方有三块,webview初始化的时间优化,静态资源加载的优化, 数据请求前展示的优化
webview初始化的时间优化
这个问题在找到webview加载各个app时间时发现的,在webview,loadRequest方法到- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;竟然耗时在1.5s左右,但是再次跳转路由或者加载别的页面时,这个时间基本就没有,猜想可能是第一次loadRequest时同时初始化了webview内部的组件。
加载空白页面的耗时
1-1.png
加载百度的耗时
1-2.png
先加载空白页面,再加载百度的耗时
1-3.png
从上边的测试很明显可以证实我们的猜测
针对上边的问题我们进行了测试,通过先加载h5项目的一个