Laya版本管理

1.7.15beta开始,打开发布界面,最后一项是管理是否启用版本管理的功能

启用版本管理之后,将会生成带hash的文件名,并生成一个version.json的文件名映射文件,在项目中可以通过使用ResourceVersion类进行版本控制,使用版本控制之后就会在加载时自动去加载带hash的文件名。

代码中通过ResourceVersion类加载管理资源版本

启用版本管理后,资源名会被加上hash值,如资源原始名字为cicrle.png,启用版本管理后,资源名会加上hash值变成cicrle_000223.png(也可能是其他),这时候如果直接请求加载资源,控制台就会提示不存在版本号,不能加载cicrle.png。

实际上,启用版本管理后,会在登录时加载version.json文件,代码中请求加载资源时,引擎会自动添加资源的版本信息,加载带hash值的资源。每次新发布资源,版本号就会更新,如果资源没更新,资源生成的带hash值的文件名也不会变。对于图集中的资源,即使只修改了图集中的某一个资源,使用其他资源时,如果图集的版本号不对,请求加载图集资源时也会提示不存在版本号,因为图集资源被修改了,整个图集的版本号自然也变了,图集版本号都变了,当然就提示不存在版本号了。

由于只在登录的时候才会更新version.json版本文件(如果设置了缓存还得清缓存),这样就会出现一个问题。如果A玩家登录后,程序修改了资源,启用了版本管理,这时候再发布一次项目(新的客户端),图集B的版本号被修改了,被修改之后,玩家再打开需要加载图集B的界面,这时候会根据登录时的version.json映射到之前的版本号图集,由于图集B的版本号已被修改,所以会提示不存在版本号,刷新即可解决。开发环境下可以只存一份版本资源,刷新就行,但是线上考虑到要支持热更,所以需要存两份版本资源,一份最新的,一份之前的,如果某资源版本号被修改,就会去映射到之前的版本号资源,提升用户体验。

这样做的好处,就是避免一些缓存比较严重,而且很难清理的运行环境下。用于版本升级更新。因为不是所有的用户都会设置不设缓存的,而且就算设置了不设缓存,也会有前提要求,比如Chrome的不设缓存还有个开发者模式下才生效的前提。启用版本管理后,资源更新,资源版本更新,资源hash值不一样,资源带hash值的文件名也不一样,加载被修改过的资源时就会去加载最新的资源了。

发布了61 篇原创文章 · 获赞 2 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_22794043/article/details/102584807