[LayaAir 2.0]【解决】微信小游戏资源热更新/缓存更新

问题描述:  小游戏资源需要更新,上传cdn后,老玩家无法下载到新的资源。如果是图集资源基本就是显示错乱了。
问题类似:http://ask.layabox.com/question/6880
如果大家遇到上面的同样的问题, 那么往下看。
 
问题原因:laya会保存50M的图片和声音资源到微信缓存里。
举例:  玩家如果加载了a.png    此时游戏更新资源a->变成了b.png  (为了方便看清楚)  。玩家进入游戏发现本地已经有了a.png那么使用本地的a,png 而不是去加载a.png的升级版b.png.  最终导致图片错乱
 
解决方式:
1.使用laya的版本管理机制,发布时勾选版本管理生成version.json,如果是 跳3
2.自己去实现,使用nodejs. rev 实现版本增量对比更新,自定义脚本得到version.json  (强烈建议,你会发现比官方小100倍,只打变量和图片和声音)
3.拥有了version文件就拥有了需要加载的最新资源路径,此时修改Laya.URL.formatURL 加入如下代码
//适配微信小游戏,微信缓存下。当连接为全地址http://的时候会被过滤。此时替换域名地址为资源地址,使用version版本匹配替换。
        if (url.indexOf(":")> 0 && Laya.URL.customFormat !=null){
            let a = url.replace(Laya.URL.basePath,"");
            url=Laya.URL.customFormat(a);
        }
 4.恭喜你已经成功了。
 
通过以上步骤,老玩家再打开游戏时,会加载到version.json, 对比a.png 已经变成了 b.png, 此时load,会通过urlformat将a.png地址修改为b.png 且本地没有b.png 那么就加载了咯!   最终游戏里实现了b.png的最新效果。
 
 
如何确认当前资源走的是微信缓存还是服务器加载
1.看微信开发者工具里的network 如果状态码307则是本地获取 (强烈推荐)
2.对比同文件加载时间.例如1M的a.png  如果time是20ms那也能说明了是本地缓存 ,而从服务器加载则是100+MS
 
TKS!
 
 
 
 
 
 
 
 
已邀请:

要回复问题请先

商务合作
商务合作