升级2.1.3引擎,
同时调整了一下wxDownloader.cleanOldCaches()的调用时机(太早会导致不必要的下载)
更上微信小游戏测试发现:部分资源图显示空白,但没报错。
看了下builtin/weapp-adapter,
发现wx-downloader可能存在一些问题。
先大概了解一下接口执行逻辑:
1、枚举出缓存目录下的所有文件
2、然后以‘已下载(cc.loader.load / cc.load.loadRes,及depends)且已缓存到内存中的文件列表’作为过滤器,将不在列表里的磁盘缓存目录下的其他文件删除。
其中枚举、删除动作均为异步接口,
在枚举出来得到的’删除列表’,到真正执行删除的过程中,有可能新增下载请求,而这个url也有可能刚好已在缓存目录下,而这时已被添加到’删除列表’中,
所以导致内存记录的状态为已下载完成,而其实这个文件并不存在于目录下(已被删除),而且也不会再次触发重新下载。
不知道以上理解是否有问题,麻烦引擎大佬们确认下是否有bug?