2008年7月24日星期四

怎么实现增量升级?

所谓增量升级,就是只升级两个版本对应文件不同的部分,而不是整个文件覆盖。好处是可以减少带宽,提高升级速度。在某些应用下(升级频繁,文件数多,文件变动不大),效果非常非常的好。

有一些商业的软件专门做这方面的增量升级,价格不菲。

这里推荐使用开源代码来解决这个问题,效果比商业软件要好很多。

一.文本文件增量升级

这个比较简单。有多种方法可以实现。 可以根据自己的实际情况来实验上面那种方法得到的patch文件最小。

二.二进制文件增量升级

这个也不难。只是选择只有一个了:bsdiff

这个玩意儿很强大,不仅在BSD下面可以用,在linux下面apt-get install bsdiff,也能拿到。windows下也有对应的版本,更有python的扩展。全部通吃。还是bsd的协议,真是爽啊!

------------------------------------------------
得到diff文件只是升级的一部分,还有其他很多要注意的问题。
------------------------
贴个测试数据,大家看看bsdiff的效果。

  • WPS从版本1151(184MB)升级到版本1238(181MB)
增加文件: 20
升级文件: 237
删除文件: 1
总共 : 138 MB (新增加文件+升级文件)

生成升级包:
RTPatch生成的zip包 : 12.6 MB
使用bsdiff后的zip包: 9.11 MB (节省带宽93.4%)

  • WPS从版本1238(181MB)升级到版本1239(139MB)
增加文件: 1
升级文件: 29
删除文件: 625
总共 : 48.4 MB(新增加文件+升级文件)

生成升级包:
RTPatch生成的zip包 : 2.28 MB
使用bsdiff后的zip包: 773 KB(节省带宽98.44%)

——————————————————————————
ps:2008-7-31
微软貌似也有二进制比较的工具,没有仔细研究,感兴趣的去看看这个

ps:2008-8-11
还有这样一个东西,vcdiff:RFC 3284中进行了描述

1 条评论:

moonight 说...

给我写的教程?very good,基本上完成了。