目的:
1. vue 项目发布之后,将 app 对 vue 服务器的请求数,降低至接近 0 (节省流量,减轻服务器压力)
2. 资源文件,本地映射,加快页面加载速度 (增强用户体验)
流程示例:
1、web 项目 1.0 上线,web 服务器打包静态文件全量包 1.0.zip,上传至文件服务器(1.0.zip)
2、app 发布内置 1.0.zip,首次运行自动解压至指定目录,webview 启动,网页从远程服务器加载资源之前,先检查本地是否已经有对应的预置资源。 如果根据规则命中本地资源,则让 WebView 直接加载本地资源,当没有找到本地资源的时候,再将控制让渡给 WebView 默认的加载机制。
3、web 项目 1.1 上线,web 服务器打包静态文件全量包 1.1.zip,同时根据历史版本包 1.0.zip 进行 diff 计算,生成增量包 1.0~1.1.diff,上传至文件服务器
4、app 检测到资源包更新,弹窗提醒用户,确定之后,下载对应的增量包(1.01.1.diff),下载完成,1.0.zip 和 1.01.1.diff 进行本地合并,重新解压合并后的资源包,资源更新完毕
服务器端要求:
1、全量包和增量包信息:web 项目标示、版本号、下载地址、md5
2、python 通过 bsdiff 生成增量包
3、检测更新,判断是否存在匹配的增量包,如何不存在增量包,生成增量包,返回增量包
客户端要求:
1、资源包 md5 的验证
2、diff 包和 zip 包的合并
3、通过 shouldInterceptRequest 进行资源拦截
shouldInterceptRequest 这个回调可以通知主程序 WebView 处理的资源(css,js,image 等)请求,并允许主程序进行处理后返回数据。如果主程序返回的数据为 null,WebView 会自行请求网络加载资源,否则使用主程序提供的数据。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于