本地文件分为三种:
- 本地临时文件:临时产生,随时会被回收的文件。通过调用特定接口产生,运行时最多存储 4GB,结束运行后,如果已使用超过 2GB,会以文件为维度按照最近使用时间从远到近进行清理至少于2GB。
- 本地缓存文件:小程序通过接口把本地临时文件缓存后产生的文件,通过调用特定接口产生,不能自定义目录和文件名。跟本地用户文件共计,小程序(含小游戏)最多可存储 200MB。
- 本地用户文件:小程序通过接口把本地临时文件缓存后产生的文件,允许自定义目录和文件名。跟本地缓存文件共计,小程序(含小游戏)最多可存储 200MB。
tips:
- 本地用户文件最多可存储200M,如果存储超过200M后,继续存储文件会失败,平台不会自动清理,只有在代码包被清理的时会被清理。
- 本地临时文件在退出小程序后随时可能会被清理掉,建议不要过度依赖,也不需要主动清理。
- 版本更新不会清理文件。
小程序storage
- 同一个微信用户,同一个小程序 storage 上限为 10MB。storage 以用户维度隔离,同一台设备上,A 用户无法读取到 B 用户的数据;不同小程序之间也无法互相读写数据。
- 小程序体验版和线上版本共用一套storage,保证体验版和线上版本所有逻辑的一致,如果两者有产品或者技术逻辑上的不一致,有可能体验时候是好的,发布以后出现问题.
- 小程序的storage是持久化的,没有定期清理的策略。小程序被销毁,切换微信号,也不会影响storage。
- 用户主动删除小程序,微信设置页清理缓存, 系统清缓存等操作会导致storage被清理,包括用户文件。
参考文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/file-system.html
最终导致删除文件原因是华为和荣耀的自动清理机制。但没有自动清理wx.setStorage,说明微信是可以解决问题的。
希望官方重视这一块。