微信小程序解除10个请求并发限制


Posted in Javascript onDecember 18, 2018

这可能是一个冷消息,所以标题比较劲爆。

小程序并发限制由来已久,从刚发布时的 5 并发,到后来的 10 并发,同时发出的请求数若超出这个限制则将被残忍抛弃,由此催生了很多开发者在自己的项目中造了「请求排队」的轮子。然而事实上,早在一年半以前,该限制就被微信官方取消。

10 个请求的并发限制

关于并发限制,微信开发者文档中是这么写的:

微信小程序解除10个请求并发限制

这一限制的意思是在同一时刻, wx.requestwx.uploadFilewx.downloadFile 加起来的并发总数不能超出 10 个。

至今,仍有很多开发者一直遵守着这个规则。

许多人在写业务的时候小心翼翼地维护着请求数。为了将请求数控制好,特地将一些并行请求改为串行,或者引入请求队列来维护小程序请求。

这部分资深开发者为了遵守这一规则所花的功夫,多少反映出了早年他们在面对数额超出后请求被残忍抛弃时的无奈。

附小程序基础库版本 1.3.0 的控制台报错:

微信小程序解除10个请求并发限制

时至今日,仍有开发者在讨论解决小程序并发限制的方法:

微信小程序解除10个请求并发限制

被忽略的消息

实际上,微信在 2017 年 7 月的基础库 1.4.0 版本升级中就做了优化,对超过并发限制的请求做了队列处理,只是还有很多开发者并不知道这一消息。

从严格意义上来说,此次优化并没有完全解除原有的并发限制。目前同时处理请求的上限仍是 10 个,但在 10 个以外的请求会排队,当前面有请求完成的时候,队列中的请求按顺序发送并处理,*不会像之前那样直接将超出 10 个的请求丢弃

附件小程序基础库 1.4.0 更新日志(部分):

微信小程序解除10个请求并发限制

现在,我们终于可以忽略请求并发限制,愉快地发送请求了。毕竟请求都是可以都发送出去的,只不过在效率上会比无并发限制的情况慢一些。

发送请求的正确姿势

如上文所说,微信小程序是在基础库 1.4.0 版本中加入对超过并发限制的请求做队列处理优化的,在 1.4.0 以下的版本中超出并发部分的请求会被丢弃。

据微信官方数据,截止到 2018 年 12 月,1.4.0 版本以下用户占比大约是 0.04%,虽然目前小程序很少会兼容到这么低的版本,但是对一些有特殊需要的小程序也要注意基础库的差异。

另外要注意的是小程序并发请求的排队机制。当同时调用的请求超过 10 个时,小程序会先发起 10 个并发请求,超过 10 个的部分按调用顺序进行排队,当前一个请求完成时,再发送队列中的下一个请求。

附 20 个请求并发测试:

微信小程序解除10个请求并发限制

测试结果:

微信小程序解除10个请求并发限制

从图中可以看到,前 10 个请求同时发出,而后面的请求的起始点,对应了前面某个请求的结束点,可以反映出请求的排队行为。

这意味着,在并发请求很多的时候应该做好排队策略,按请求的重要程度和响应时间调整调用顺序,如果遇到请求的响应很慢的情况,可以考虑做 timeout 处理,以免大量等待,影响用户体验。

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

Javascript 相关文章推荐
一个javascript参数的小问题
Mar 02 Javascript
javascript 面向对象思想 附源码
Jul 07 Javascript
JavaScript为对象原型prototype添加属性的两种方式
Aug 01 Javascript
人人网javascript面试题 可以提前实现下
Jan 05 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
Jan 26 Javascript
jquery 隐藏与显示tr标签示例代码
Jun 06 Javascript
jQuery中多个元素的Hover事件解决方案
Jun 12 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
Nov 23 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
Apr 12 Javascript
seajs实现强制刷新本地缓存的方法分析
Oct 16 Javascript
原生js实现form表单序列化的方法
Aug 02 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 Vue.js
vue项目中axios请求网络接口封装的示例代码
Dec 18 #Javascript
vue中引入第三方字体文件的方法示例
Dec 17 #Javascript
vue 表单验证按钮事件交由父组件触发的方法
Dec 17 #Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
Dec 17 #Javascript
vuex 解决报错this.$store.commit is not a function的方法
Dec 17 #Javascript
详解Vue This$Store总结
Dec 17 #Javascript
vue + element-ui的分页问题实现
Dec 17 #Javascript
You might like
PHP 微信支付类 demo
2015/11/30 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
jQuery的框架介绍
2016/05/11 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
Python中的引用和拷贝浅析
2014/11/22 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python2随机数列生成器简单实例
2017/09/04 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
kafka-python批量发送数据的实例
2018/12/27 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
python实现用户名密码校验
2020/03/18 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
python 动态绘制爱心的示例
2020/09/27 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
商务经理岗位职责
2014/07/30 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
追悼会答谢词
2015/01/05 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
员工考勤管理制度
2015/08/06 职场文书
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
Win11快速关闭所有广告推荐
2022/04/19 数码科技
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js