php热更新手游资源,手游中的热更新

零·热更新的实现原理

以cocos2dx-lua为例,当用户启动游戏,游戏将会先检索手机的A,查看是否有脚本代码与资源文件,如果有,则加载这些代码文件,否则从安装包内的代码文件开始加载。

所以当我们希望能够动态更新用户手机的内容时,只需要操作刷新目录A即可。

假设 线上发布了版本1.0,现在需要进行版本1.1的热更新

一、差量包方式热更

d0f1d1904b7d

流程图

需要注意,假如1.2发布,因为线上同时存在1.0、1.1版本,所以需要生成差量包 1.0-1.2.zip,以及 1.1-1.2.zip。

同理,假如一款产品经历了更新:1.1、1.2、1.3........1.9,那么当进行2.0热更新的时候,那么需要生成的差量包是 1.0-2.0.zip、1.1-2.0.zip...........1.9-2.0.zip,

这种方式的缺点很明显:随着发布的版本增多,维护的成本巨大。

那么有办法解决这个问题吗? 继续往下看

二、md5列表对比方式

md5列表:即对项目内每个资源(代码、图片、音频、视频等等)生成对应的md5值,通常以xml、json的方式保存起来

d0f1d1904b7d

流程图

那么同样,假如我需要发布1.2版本呢?

简单,我们只需要上传一份1.2版本的最新资源与md5列表在服务器上就行,

与方式一不同,服务器永远只需要维护一套更新资源,不用管之前发布了多少版本。

线上可能会存在很多版本不一的客户端,不过没关系,它们各自都会拿自身的md5列表与最新的md5列表比对,

生成自己独一无二的差异文件列表。

但是这种热更的方式也有自己的短板,方式一是把所有的文件打包成zip,而方式二则是一个个下载文件,所以在下载速度上肯定是略逊一筹的。

三、总结

笔者在工作过程中,两种方式的热更都接触过,就个人而言更喜欢第二种方式,理由是,维护起来真的很简单,简单到由前端就能够实现所有功能。

不过客观来讲,两种热更的方式并没有强弱之分,只是是否用空间换体验的考量,而且成熟点的项目组,都会对各自选择的方案进行优化,来减少两个方案个字的短板。

如果还想对热更新有进一步的了解,请点击我

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值