当前位置:网站首页>轮询和长轮询的区别
轮询和长轮询的区别
2022-08-01 10:52:00 【InfoQ】
- 轮询
由客户端发送请求,服务器接收请求的过程,通过客户端不断请求,使得客户端能够模拟达到类似实时收到服务器的效果。客户端定时向服务器发送 Ajax 请求,服务器接到请求后马上返回响应信息,并关闭连接。
不管服务端数据有无更新,客户端每隔定长时间请求拉取一次数据,可能有更新数据返回,也可能什么都没有。
适用用户量比较小,不太注重性能的项目,如小型应用、WEB 应用、例如系统消息、天气展示等。
优点:逻辑简单,易于理解,开发快速。
缺点:
(1)需要重复建立 HTTP 连接,占用大量客户端和服务端的连接
资源。
- 客户端越多, 服务端压力越大,很多时候并没有新的数据更新,因此绝大部分请求都是无效请求。
- 数据不一定是实时更新,要看设定的请求间隔,基本会有延迟。


- 长轮询
长轮询是长连接的一种,当服务器收到客户端发来的请求后,服务器端不会直接进行响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则进行响应,如果一直没有数据,则会 hold 住请求,直到服务端的数据发生变化,或者等待一定时间超时才会返回。
客户端 JavaScript 响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。像 WebQQ/FaceBook 早起都是使用长轮询实现的。
优点:消息即时到达,和短轮询比起来,明显减少了很多不必要的 HTTP 请求次数,在无消息的情况下不会频繁的请求,相比之下节约了资源,在无消息的情况下不会频繁的请求。
缺点:连接挂起会导致资源的浪费,长轮询会造出非常多的请求,不断的请求可能会造成的影响是数据顺序无法得到保证。

- 建议
轮训能够实现的功能长轮训都能满足,从技术角度考虑建议使用长轮训替换轮训实现,节省服务器性能和带宽,相比下来开发成本也不高。
源码附件已经打包好上传到百度云了,大家自行下载即可~
链接: https://pan.baidu.com/s/14G-bpVthImHD4eosZUNSFA?pwd=yu27
提取码: yu27百度云链接不稳定,随时可能会失效,大家抓紧保存哈。
如果百度云链接失效了的话,请留言告诉我,我看到后会及时更新~
开源地址
码云地址:
http://github.crmeb.net/u/defu
Github 地址:
http://github.crmeb.net/u/defu
边栏推荐
- Basic configuration commands of cisco switches (what is the save command of Huawei switches)
- Promise学习(二)一篇文章带你快速了解Promise中的常用API
- WPF 截图控件之绘制箭头(五)「仿微信」
- 各位大拿,安装Solaris 11.4操作系统,在安装数据库依赖包的时候包这个错,目前无原厂支持,也无安装盘,联网下载后报这个错,请教怎么解决?
- Jenkins安装插件遇到的问题
- xss漏洞学习
- 4种常见的鉴权方式及说明
- 回归预测 | MATLAB实现RNN循环神经网络多输入单输出数据预测
- 在线GC日志分析工具——GCeasy
- Push the local project to the remote repository
猜你喜欢
随机推荐
Pve delete virtual machine "for a collection"
2022年7月31日--使用C#迈出第一步--使用 C# 创建具有约定、空格和注释的易读代码
CTFshow,命令执行:web33
JWT
JWT
cisco交换机基本配置命令(华为交换机保存命令是什么)
ModelArts-based object detection YOLOv3 practice [play with HUAWEI CLOUD]
The meaning and trigger conditions of gc
pve 删除虚拟机「建议收藏」
跨域网络资源文件下载
报告:想学AI的学生数量已涨200%,老师都不够用了
一篇文章,带你详细了解华为认证体系证书(2)
Promise学习(四)异步编程的终极解决方案async + await:用同步的方式去写异步代码
复现assert和eval成功连接或失败连接蚁剑的原因
July 31, 2022 -- Take your first steps with C# -- Use arrays and foreach statements in C# to store and iterate through sequences of data
Online - GCeasy GC log analysis tools
正则表达式
STM32入门开发 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)
Promise学习(二)一篇文章带你快速了解Promise中的常用API
jmeter








