1 把Html5页面嵌入到Zip包中
App中会使用很多Html5页面。我们一般使用内置的WebView来打开一个外部的URL地址,这样一来,速度就肯定不如App原生的页面快了。
我们可以打开几个App的Html5页面来进行比较,差距立刻就能看出来。当年我就是被老板追着问为什么竞争对手的App打开Html5也就1-2秒,而我们的App加载Html5页面就跟牛车一样慢。
我看过很多App的内部结构,发现无论是ipa还是apk包中都会有一个Zip压缩包,里面存放着要加载的Html5页面、图片、CSS和JS文件。App每次启动的时候,会启动一个线程,异步把Zip包解压到本地的某个目录下,然后每次从本地读取Html5页面,这样就不用每次从服务器加载Html5页面了。
也许有人会问,如果这个Zip包里的内容有变化怎么办?比如说新增了图片或是修改了Html5页面的内容。我们需要有个版本控制机制。每次加载Html5页面之前,先问一下服务器,当前Html5页面的版本是什么,如果与本地保存的版本号相同,就直接加载本地的Html5;否则,就从服务器重新下载一个新的Zip包,仍然解压到本地相同的目录下。
如果客户端自带Zip包版本比较旧,那么每个新下载的用户打开App都要下载服务器最新版本的Zip包。这样不好,会导致Zip包很大,要下载很久,所以每次发版前,都要把服务器上最新的Zip压缩包放到App安装包