微信小程序性能优化之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 相关文章推荐
jQuery插件 selectToSelect使用方法
Oct 02 Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
Nov 20 Javascript
JS表单验证的代码(常用)
Apr 08 Javascript
jQuery中ScrollTo用法示例
Sep 04 Javascript
Bootstrap基本样式学习笔记之图片(6)
Dec 07 Javascript
详解用vue编写弹出框组件
Jul 04 Javascript
JS模拟实现哈希表及应用详解
May 04 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
Aug 10 Javascript
vue父子组件的通信方法(实例详解)
Nov 10 Javascript
js实现贪吃蛇小游戏(加墙)
Jul 31 Javascript
vue中的v-model原理,与组件自定义v-model详解
Aug 04 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
php常用Stream函数集介绍
2013/06/24 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
删除重复数据的算法
2006/11/23 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
python实现的简单文本类游戏实例
2015/04/28 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Django中FilePathField字段的用法
2020/05/21 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
建筑安全员岗位职责
2014/03/13 职场文书
商场促销活动策划方案
2014/08/18 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
项目战略合作意向书
2015/05/08 职场文书
花木兰观后感
2015/06/10 职场文书
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL