小程序网络图片读取:web
为了尽可能减小上面两个问题,因此对已读的图片进行缓存处理,减小屡次访问没必要要的流量消耗。小程序
文件主要分为两大类:缓存
其中本地文件又分为三种:网络
而咱们要使用的文件缓存方式就是 本地临时文件 。异步
图片缓存流程:post
wx.downloadFile(Object object)
下载到本地,成为本地临时文件。FileSystemManager.accessSync(string path)
判断文件存在,则读取本地地址;不存在,删除该映射。1~2M
作其余代码备用,而文件异步保存,自己会致使有好多文件没法检测到,若是经过循环去判断最近时间,太耗费性能,还不如进入小程序时,直接清空,从头开始。小程序自己是轻量级的,一段时间清空一次便可。const fileSystem = wx.getFileSystemManager() const getStorageImage = (web_image) => { let webImages = wx.getStorageSync('webImages') || [] let webImage = webImages.find(y => y.web_path === web_image) if (webImage) { try { fileSystem.accessSync(webImage.local_path) return webImage.local_path } catch(e) { let webImageIdx = webImages.findIndex(y => y.web_path === web_image) webImages.splice(webImageIdx, 1) wx.setStorageSync('webImages', webImages) } } else { wx.downloadFile({ url: web_image, success (res) { if (res.statusCode === 200) { let filePath = res.tempFilePath let webImageStorage = wx.getStorageSync('webImages') || [] let storage = { web_path: web_image, local_path: filePath, last_time: Date.parse(new Date()), } webImageStorage.push(storage) wx.setStorageSync('webImages', webImageStorage) } } }) } return web_image } module.exports = { getStorageImage }
本文参照博客性能
https://juejin.im/post/5b42d3ede51d4519277b6ce3
(幽蛰 写于 2020.06.10)url