移动端Web资源的本地缓存解决方案,能够拦截webview的请求,并优先使用本地缓存静态资源进行响应,以此来对webview加载页面性能进行优化。
特点:
协议层拦截请求,透明替换响应
静态资源版本控制及更新策略
资源防篡改策略
静态资源自动打包到应用,及首次安装解压处理
系统要求该项目支持最低AndroidAPILevel14。
CandyWebCache客户端SDK对服务器的要求提供给客户端SDK的接口:
版本检测接口,返回信息包括
请求的webapp对应的增量包和全量包信息:版本号、下载地址、md5、url、domains
请求中不包含的webapp则返回全量包信息:版本号、下载地址、md5、url、domains
提供给应用服务器的接口:
更新全量包
根据全量包和历史N(N可配置)个版本的包进行diff包计算
计算各个资源包的md5,并加密md5值
上传增量包和全量包到文件服务,并记录各个包的md5、资源url、版本号信息、domains
服务端功能要求:
计算资源包diff包(使用bsdiff)
上传资源到文件服务器
资源md5计算与加密(加密算法:DES+base64,客户端对称加密秘钥目前是埋在客户端代码中)
webappdomains的配置
CandyWebCache客户端SDK对打包方式的要求打包资源包目录路径要跟url能够对应,如 https://m.kaola.com/public/r/js/core_57384232.js ,资源的存放路径需要是 public/r/js/core_57384232.js 或者 r/js/core_57384232.js。
资源缓存不支持带“?”的url,如果有版本号信息需要打到文件名中。对于为了解决缓存问题所采用的后缀形式url,如 https://m.kaola.com/public/r/js/core.js?v=57384232 ,需要调整打包方式,采用文件名来区分版本号。
评论