缓存问题之异步处理(微信小程序)

缓存问题之异步处理(微信小程序),第1张

微信小程序里面的本地缓存

wxsetStorage(wxsetStorageSync)、wxgetStorage(wxgetStorageSync)、wxclearStorage(wxclearStorageSync)

localStorage :是永久存储,以用户维度隔离,同一台设备上,A 用户无法读取到 B 用户的数据

在小程序中无 Sync 结尾的本地缓存中,都为 异步缓存

wxsetStorage(object)

参数object说明

控制台

表示储存成功

wxgetStorage(object)

示例

这个key值就是先前setStorage的命名key,证明指定获取那个缓存中的数据

wxclearStorage(object)

清理本地数据缓存

将之前储存在Storage中的数据清空。适用于退出登录后登录信息的清除

wxgetStorageInfo(object)

异步获取当前storage的相关信息( 当前小程序里面所有的storage的储存信息

参数说明

执行结果

wxremoveStorage(OBJECT)

从本地缓存中异步移除指定 key值

获取当前data值时将报错undefined

执行结果

storage缓存数据

以键值对key, data的形式存储数据,单个 key 允许存储的最大数据长度为 1MB,所有数据存储空间最大为10M。

属性 类型 默认值 必填 说明

key string 是 本地缓存中指定的 key

data any 是 需要存储的内容。只支持原生类型、Date、及能够通过JSONstringify序列化的对象。

不带Sync的为异步,带Sync的为同步,需要做异常处理,防止阻塞主程序。

分别为set存储、get得到一个、getInfo得到所有,remove移除一个、clear清除所有

隔离策略

同一个微信用户,同一个小程序 storage 上限为 10MB。storage 以用户维度隔离,同一台设备上,A 用户无法读取到 B 用户的数据;不同小程序之间也无法互相读写数据。

插件隔离策略

同一小程序使用不同插件:不同插件之间,插件与小程序之间 storage 不互通。

不同小程序使用同一插件:同一插件 storage 不互通。

清理策略:

本地缓存的清理时机跟代码包一样,只有在代码包被清理的时候本地缓存才会被清理。

二save File缓存文件

本地文件存储的大小限制为 10M

三,database服务端数据库存储数据存储数据至服务器端。

四upload File,上传文件存储文件至服务器端。

云函数uploadFile文件名命名限制

不能为空

不能以/开头

不能出现连续/

编码长度最大为850个字节

推荐使用大小写英文字母、数字,即[a-z,A-Z,0-9]和符号 -,!,_,, 及其组合

不支持 ASCII 控制字符中的字符上(↑),字符下(↓),字符右(→),字符左(←),分别对应 CAN(24),EM(25),SUB(26),ESC(27)

如果用户上传的文件或文件夹的名字带有中文,在访问和请求这个文件或文件夹时,中文部分将按照 URL Encode 规则转化为百分号编码。

不建议使用的特殊字符: ` ^ " \ { } [ ] ~ % # \ > < 及 ASCII 128-255 十进制

可能需特殊处理后再使用的特殊字符: , : ; = & $ @ + (空格)及ASCII 字符范围:00-1F 十六进制(0-31 十进制)以及7F(127 十进制)

封装小程序获取手机号接口及按钮:

getPhoneNumber(e) {

    thisactiveUser(edetailiv, edetailencryptedData);

  },

  activeUser(iv, encryptedData) {

    let url = appglobalDataURL + '/front/employeeInfo/activeUser';

    let openid = wxgetStorageSync('Openid')

    wxrequest({

      url: url,

      data: {

        iv: iv,

        encryptedData: encryptedData,

        openid: openid

      },

      success: function (res) {

        if (resdatadata) {

          wxsetStorage({

            key: 'active',

            data: resdatadata,

          })

        } else {

          wxshowToast({

            title: '没注册不能激活',

          })

        }

      }

    })

  }

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>

调用微信扫一扫功能:

<text bindtap="bx">报修</text>

bx:function(){

      wxscanCode({

        success(res) {

          consolelog(res)

        }

      })

    },

由于我们刚进入页面的时候,就需要获取到对应的地理位置,所以我们需要把方法写入appjs全局文件中,然后将其存入storage中,由于存储的要求必须是字符串,所以我们存入的时候需要将其转化为字符串,使用到的时候再将其转换为对象。需要将其写在try catch里面。

utils/getLocationjs(这是封装好的)

appjs

再其他页面使用的时候,在onLoad中将其存入到data里面,使用的时候只需要调用data(_thisdataaddressInfo)里面的数据即可

注意:像这样通用的,复用的属性或者方法,都可以这样去写,例如openid,获取地理位置等。

不需要授权,微信小程序提供的API中有一个setStorage和getStorage用于存储数据,这两个API可以实现小程序的数据存储,无需授权,而且存储空间有限,每个用户最多可以存储10M的数据,可以多次存储,但是考虑到性能问题,最好不要把大量数据存储到小程序的Storage中。

以上就是关于缓存问题之异步处理(微信小程序)全部的内容,包括:缓存问题之异步处理(微信小程序)、微信小程序用户评论怎么存储、小程序获取手机号和调用微信扫一扫事例(不喜勿喷喔~)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10642977.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存