| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- const postfix = '_cache_time'; // 缓存前缀
- const simpleCache = {
- postfix: postfix,
- }
- /**
- * 写入缓存
- * @param {String} key 本地缓存中的指定的key
- * @param {Any} data 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象
- * @param {Number} time 保存的时间, 数字类型,单位秒 为空则永久有效.
- */
- simpleCache.put = function(key, data, time) {
- uni.setStorageSync(key, data)
- var seconds = parseInt(time);
- if (seconds > 0) {
- var timestamp = Date.parse(new Date());
- timestamp = timestamp / 1000 + seconds;
- uni.setStorageSync(key + postfix, timestamp + "")
- } else {
- uni.removeStorageSync(key + postfix)
- }
- }
- /**
- * 从本地缓存中同步获取指定 key 对应的内容。
- * @param {String} key 本地缓存中的指定的 key
- * @param def 获取失败时的默认内容,可以为空.
- */
- simpleCache.get = function(key, def) {
- var deadtime = parseInt(uni.getStorageSync(key + postfix))
- if (deadtime) {
- if (parseInt(deadtime) < Date.parse(new Date()) / 1000) {
- //已过期
- if (def) {
- return def;
- } else {
- //清除过期时间
- uni.removeStorageSync(key + postfix)
- //移除缓存
- uni.removeStorageSync(key)
- return false;
- }
- }
- }
- var res = uni.getStorageSync(key);
- if (res) {
- return res;
- } else {
- if (def == undefined || def == "") {
- def = false;
- uni.removeStorageSync(key)
- }
- return def;
- }
- }
- /**
- * 从本地缓存中同步移除指定 key。
- * @param {String} key 本地缓存中的指定的 key
- */
- simpleCache.remove = function(key) {
- uni.removeStorageSync(key);
- uni.removeStorageSync(key + postfix);
- }
- /**
- * 同步清理本地数据缓存。
- */
- simpleCache.clear = function() {
- // 这里面其实可以扩展你不想清理的缓存,比如你保存的用户登录状态. 在清理之前先获取一次.
- // var user = simpleCache.get("user_info");
- uni.clearStorageSync();
- // simpleCache.put("user_info",user); // 等 其它的自行扩展.
- }
- simpleCache.image_cache=function(id_key,image_url,isError,time=3*24*60*60) {
- let imgTemp= simpleCache.get(id_key)
- if(!imgTemp){
- console.log("我来自网络")
- //本地没有缓存,需要下载
- uni.downloadFile({
- url: image_url,
- success: (res) => {
- if (res.statusCode === 200) {
- let temp=res.tempFilePath
- simpleCache.put(id_key,temp,time)
- }
- }
- });
- return image_url
- }else{
- if(isError){
- console.log("缓存发生错误了,从网络中获取")
- return image_url
- }else{
- console.log("缓存没有发生错误,从缓存中获取")
- return imgTemp
- }
- }
- }
- // export default simpleCache
- module.exports = {
- put:simpleCache.put,
- get:simpleCache.get,
- remove:simpleCache.remove,
- clear:simpleCache.clear,
- cacheImg:simpleCache.image_cache
- }
|