hybrid资源包增量更新机制: 起步

回到首页

DXY Tech&Product Division


丁香医生app决定使用hybrid到现在已有一段时间。前端资源包的大小接近360KB。并且pm会不时的提出一些小的需求,可能是一些样式的调整,也可能是新的活动页面,因此发布十分频繁。

丁香医生hybrid开发遇到的问题

频繁的发布,很小的改动,尺寸不断增加的资源包。

丁香医生hybrid开发资源更新机制的现状

使用原始的全量更新,即每一次发布,对于终端用户都必须下载完整的资源包,尽管资源包的变动很小。

面对以上问题和现状,需要新的资源更新机制。他的核心功能是

支持全量更新,增量更新

设计

资源增量更新机制是在如下前提下设计的

  1. 没有后台程序员提供支持。(跨部门推一个方案感觉很麻烦)
  2. 尽量简单。(开发,部署)

最终的增量更新机制如下

  • 由前端进行历代版本资源包的diff,生成不同版本之间的增量包(增量包为变动的文件和变动详情配置文件的压缩包)
  • 使用已有的前端资源发布机制进行资源的发布
  • 客户端根据配置文件,获取相应的增量包,进行patch

diff&patch

找 node, swift, java都支持的 diff&patch 第三方库好麻烦。

最终采用的方案将diff的粒度增大到文件。根据文件内容的hash值是否不同,来决定是否进行文件的全量更新。因此最终的diff&patch算法是简单文件内容比较和文件增、删、替换操作。虽然不是最好的,但是它足够简单,实用。

gulp插件

通过前端构建工具使版本方便的发布

npm install gulp-assets-incremental-update --save-dev

//gulpfile.js
require('gulp-assets-incremental-update')(gulp, {
    publish_folder : publish_folder,//资源发布目录
    name : 'article_detail.zip',//zip包名
    assets_folder : assets, //本地资源目录
    base_url : base_url //线上资源路径 {base_url}/1/2/{name}
});

gulp.task('publish', ['assets-incremental-update'] , function(){});

gulp publish

相关文章

  1. hybrid资源包增量更新机制: 优化与安全
  2. RDS(前端资源分发系统)

分类

TOP