我一直发现小程序太慢了,尤其是第一次打开的时候。因为第一次会涉及到登录的授权,官方文件是这样说的:
通过wx.login()获取用户登录状态后,需要维护登录状态。开发者需要注意的是,session_key、openid等字段不应该直接作为用户的id或者会话的ID,而应该自己发送一个会话登录状态(请参考登录时序图)。
因此,一个会话标识符存储在后台,它独立于微信的session_key。而且业务本身的会话是有设定有效期的,和微信的session_key是一致的。
我们的业务流程是:
1.前端检测是否有会话。如果没有会话,wx.login()将获得session_key。2.通过session_key调用后台接口来交换会话。3.前端缓存会话。4.如果前端检测到会话,调用wx.checkSession(),判断session_key的有效期,然后请求服务CGI。
上面有一个问题,只要成功获取session_key,后续的请求就会调用wx.checkSession()来判断其有效期。但是wx.checkSession()是一个耗时的过程。每次请求CGI都要检查吗?
因为session也是有效的,一旦我们请求业务的CGI后台判断登录状态无效,前端可以根据后台返回的错误码判断是否再次登录。
所以不需要每次都有wx.checkSession,wx.checkSession几乎没有用也没有必要,因为登录状态是可以由我们业务维护的。一旦失败,如果用session_key替换,wx.login()就可以了。
结论是:wx.checkSession几乎不需要调用,最多需要300 ms
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。