微信小程序性能优化之checkSession的使用


Posted in Javascript onMarch 06, 2019

一直发现小程序好慢,尤其是第一次打开的时候。因为第一次会涉及到登录的授权,官方文档是这么说的:

通过 wx.login() 获取到用户登录态之后,需要维护登录态。开发者要注意不应该直接把 session_key、openid 等字段作为用户的标识或者 session 的标识,而应该自己派发一个 session 登录态(请参考登录时序图)。

所以后台存储了一个session标识,和微信的session_key 是独立的。而且业务自身的session也有设置有效期,和微信的session_key 是一致的。

我们的业务处理流程是:

1、前端检测有无session,没有的话wx.login(),获取session_key 。
2、通过session_key 调用后台接口,换取session。
3、前端缓存session。
4、如果前端检测有session,调用wx.checkSession(),判断session_key 有效期,然后请求业务CGI。

上面有个问题,只要成功获取session_key后,后续的请求都会先调用wx.checkSession()来判断它的有效期。但是wx.checkSession()是一个耗时的过程,有没有必要每次请求CGI都去校验呢?

微信小程序性能优化之checkSession的使用

因为session也存在有效,一旦我们请求业务的CGI后台判断登录态失效了,那么前端可以根据后台返回的错误码来判断是否重新登录。

所以就没有必要每次wx.checkSession,而且wx.checkSession几乎是没有用的到必要,因为登录态可以由我们业务维护,一旦失效,wx.login()重新换回一个session_key 就ok了嘛。

结论是:wx.checkSession几乎没有必要调用,而且他本身耗时,长达300+ms。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在IE6下发生Internet Explorer cannot open the Internet site错误
Jun 21 Javascript
Javascript弹出窗口的各种方法总结
Nov 11 Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 Javascript
jquery实现相册一下滑动两次的方法
Feb 09 Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
react-router实现跳转传值的方法示例
May 27 Javascript
详解extract-text-webpack-plugin 的使用及安装
Jun 12 Javascript
layui递归实现动态左侧菜单
Jul 26 Javascript
使用uni-app开发微信小程序的实现
Dec 13 Javascript
js实现整体缩放页面适配移动端
Mar 31 Javascript
微信小程序使用前置摄像头拍照
Oct 22 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
Mar 06 #Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 #Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 #Javascript
深入理解Puppeteer的入门教程和实践
Mar 05 #Javascript
[jQuery] 事件和动画详解
Mar 05 #jQuery
Vue 事件处理操作实例详解
Mar 05 #Javascript
Vue插槽原理与用法详解
Mar 05 #Javascript
You might like
短波收音机简介
2021/03/01 无线电
深入array multisort排序原理的详解
2013/06/18 PHP
php实现搜索类封装示例
2016/03/31 PHP
PHP MVC框架skymvc支持多文件上传
2016/05/26 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
js动态创建及移除div的方法
2015/06/03 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
django query模块
2019/04/20 Python
python实现文件助手中查看微信撤回消息
2019/04/29 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
Python selenium自动化测试模型图解
2020/04/15 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
python实现自动清理重复文件
2020/08/24 Python
super()与this()的区别
2016/01/17 面试题
本科生学习总结的自我评价
2013/10/02 职场文书
高三高考决心书
2014/03/11 职场文书
本科毕业生自荐信
2014/06/02 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
Python实战之疫苗研发情况可视化
2021/05/18 Python
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle