一般对于H5加载优化,最有效的就是离线包了。 那用了离线包之后呢? 还有优化空间吗?
考虑到 WKWebView 运行都是在独立进程,跟当前 App 交互都要进行 IPC(跨进程通信),代价还是比较高的。
而之前的 H5离线包方案 :
User => load HTML file => (IPC) => WebView Action => (IPC) => callback load finished
=> execute js code input api cache => (IPC) => WebView Action => Render。
至少要经过3次 跨进程通信。
后续想了个方案, 当我们下载完 离线包之后, 在对应目录下 生成一个JS代码文件(规定前端进行相对路径引用)
比如前端这样写:
<script src='./api-data/client.js'/>
当客户端要打开这个页面之前, 在相对路径下 生成JS代码文件
代码内容如下:
window.meiyou_api_data = {
'querys' : { 参数 },
'api-cache' : { 接口返回数据 }
};
这样在 load html file 时,前端就获取到接口缓存数据了, 不必要后续的两次 IPC 通信。
大家后续可以考虑下 两个问题:
- 可能会同时打开多个页面,怎么保证不污染其他页面
- 为啥后续 我们又放弃了这个方案。