本发明涉及无线技术领域,特别是一种提升webview打开速度的方法。
背景技术:
目前大部分移动端应用(app)是采用hybrid架构,也即由原生app技术和web技术共同组成。部分页面采用原生代码编写(比如在苹果系统上,使用objectc语言或swift语言编写,在安卓系统上,使用java语言或kotlin语言编写),部分页面由html、css和js来编写,由webview容器来加载。这种hybrid架构往往是首屏加载native页面,后续再加载web页面。在加载web页面时,有较多的应用选择了加载在线web页面的方案。
加载在线web页面所需要的网络静态资源时,需要建立网络连接,从远端的服务器下载所需资源。由于网络延迟高、无线网络不稳定和服务器响应慢等问题,app加载在线web页面时,速度往往比较慢,会让用户等待较久时间才能完全展示出页面。
为了解决这种问题,业界一般有这几种方案:
1.加载远端web页面时,使用原生开发技术开启多个下载线程/进程,帮助下载web页面所需的资源。
优点:通过native代码帮助webview下载文件,突破webview自身并发下载资源数量的限制。
缺点:
a.需要native编写代码,接管webview的缓存管理系统,从而将下载的资源给webview使用。
b.即使是多个线程/进程同时下载,同样需要面对网络延迟高、无线网络不稳定和服务器响应慢等问题。
2.将远端的页面所需静态资源,通过推送等手段提前下发到用户手机内,在用户打开webview页面时,实际使用的是已经下载好的本地页面。
优点:在打开web页面时,不需要等待网络下载资源完成,直接加载以前下载好的本地页面即可。
缺点:
a.需要native编写代码,接管webview的缓存管理系统,从而将网络请求转为本地资源请求使用。
b.服务端需要建立文件推送机制,native侧需要建立文件接收机制。
webview自身带了缓存系统,它的原理是(如图1):加载过的静态资源,默认会缓存起来,在后期的网络资源请求过程中,如果发现该文件之前已经被缓存,则用该缓存文件作为网络请求结果来响应,省去了网络请求过程。
技术实现要素:
本发明的目的在于提供一种提升webview打开速度的方法,解决现有技术的技术问题,利用webview自身的缓存技术,低成本的实现页面打开速度提速。
为解决上述技术问题,本发明采用如下技术方案:
一种提升webview打开速度的方法,其特征在于:
利用webview缓存系统的特性,在进入到网页之前,停留在native页面阶段时,建立一个用户不可见的webview,预先加载部分或全部web页面所需要的静态资源,webview会将这些静态资源放入自身的缓存系统当中;
在用户在后面的操作中,加载网页时,webview便会对网页所需要的资源从缓存中查找,如果找到就直接响应。
藉由上述方法,本发明具有如下优点:本发明利用webview自身的缓存技术,以较低成本来实现提升网页加载速度。
附图说明
图1是webview加载网络资源原理图。
图2是本发明方法原理图。
具体实施方式
请参阅图2,本发明公开了一种提升webview打开速度的方法。
该方法利用webview缓存系统的特性,在进入到网页之前,停留在native页面阶段时,建立一个用户不可见的webview,预先加载部分或全部web页面所需要的静态资源,webview会将这些静态资源放入自身的缓存系统当中。
在用户在后面的操作中,加载网页时,webview便会对网页所需要的资源从缓存中查找,如果找到就直接响应。这些资源就不需要即时从网络上下载了,减少了用户等待时间。
部分hybrid应用进入到网页前,会停留在native页面,比如native的子应用列表页或引导页等。本方法是在这个native页面中,建立一个隐藏的webview(如宽0px高0px的webview),对后续要请求的全部或部分资源进行预加载。预加载的载体可以为一个html页面,把需要预加载的图片、js、css文件等资源,通过html引用的方式进行加载。
当后续进入到web页面时,正常加载即可。webview会利用自身的缓存机制,对缓存中已存在的资源直接作为网络请求结果响应,不再重新请求。
以上对本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中;在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。