吾知网

标题: 使用 AssetsManager 灵活定制微信小游戏的缓存策略 [打印本页]

作者: jekeyhui99    时间: 2018-10-23 11:49
标题: 使用 AssetsManager 灵活定制微信小游戏的缓存策略
背景知识
微信小游戏分为“游戏包”和“本地缓存”两个存储空间,当开发者将微信小游戏在微信开发者工具中发布时,微信开发者工具会将所有微信工程中的源码和资源进行压缩打包,既“游戏包”,该包体积不能超过4M。
高于4M的资源需要通过服务器进行动态下载,白鹭引擎之前已经提供了动态加载机制,将游戏资源放置在一个外部CDN服务器上。但是之前并没有提供文件缓存功能,所以每一次访问时,用户均会重复从网络下载文件,而不是从本地缓存加载。
微信小游戏提供了一套本地文件缓存接口,允许每个游戏最多 50M 资源在本地进行缓存。白鹭引擎在最新的 5.2 稳定版本中已经对此进行了适配,本文将为您讲解如何利用微信小游戏的缓存策略改善游戏的加载体验
准备工作
在使用这套机制之前,您需要确保以下几点:
步骤一:设置资源为外部读取
在进行缓存之前,您需要将您的游戏资源设置为从外部加载,而非从游戏包加载,如果您之前已经做完了这一步,可以忽略这个步骤。
修改您的 /config.wxgame.ts 文件,在发布过程中添加 ResSplitPlugin 插件:
该插件的用意是,在您执行 egret publish 时,将 resource 文件夹的所有内容发布到 projectname_wxgame_remote 文件夹,而非 projectname_wxgame 文件夹中,这样游戏资源就不会被打包进微信项目。
这一步完成之后,您的项目就已经支持资源从外部读取。
步骤二:启动微信小游戏缓存
这一步完成之后,您已经初步完成了对缓存的支持,但是后续还有一些工作需要处理。
步骤三:处理资源更新
步骤四:处理超过50M的情况
部分游戏的资源可能大于 50M,您可以自由修改 image.js 和 text.js 中的 needCache 函数,编写自己的逻辑,将特定资源不存储于本地。
总结
通过上述步骤,您就可以解决微信小游戏的本地缓存问题。从整个过程来看,引擎团队的核心设计思路在于:






欢迎光临 吾知网 (http://www.5g99.com/bbs/) Powered by Discuz! X3.2