博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript大量推送数据如何快速处理?
阅读量:4293 次
发布时间:2019-05-27

本文共 747 字,大约阅读时间需要 2 分钟。

后端实现了websocket主动推送,现在想在网页上显示推送的数据,但是由于推送的数据量特别庞大,自己的处理比较缓慢,不但造成了数据推送的延迟,页面也特别卡顿,进行点击button等组件的操作也特别卡顿。我在websocket的on_message下是这样处理的:

js是单线程执行的,虽然数据传输是单独的线程,但传输后的数据要占用js执行线程去解析,如果解析过程中同时有layout动作产生,将会以队列方式进行阻塞。要等到释放js线程进入下一个event fire才能有一次webview的更新,所以会产生卡顿。举例来说就像大数据量的页面刷新,在document ready以后就可以对元素进行操作了,但有大资源还在下载,window onload还未完成时进行焦点切换等操作操作也是非常卡顿的。没有做实验,只是从理论上提出一些建议。不要立即使用js处理推送过来的数据,尝试使用local storage等方式先存储数据,避免下载线程和js线程间频繁切换。换用notifications作为推送手段等等。在你数据处理的函数中console一下时间,找出耗时较大的部分进行优化。

 

卡顿即帧率低,要提升帧率就要减少每帧(1s/60)内时间开销比较大的事情。

什么开销大,我猜测你可能做了dom操作(要把数据展示出来),可以尝试把每获得一条数据就展示一次改为获得一定的数据后集中展示一次。这里的关键字有requestAnimationFrame和document fragment。

另外考虑多线程处理,在worker里拼接html字符串甚至拼装virtualDOM也是可以的。

其实最应该说的是要学会如何确定问题究竟出在了哪。打开devtool的timeline仔细分析一下再决定用哪些方法改善。

转载地址:http://pkzws.baihongyu.com/

你可能感兴趣的文章
对于模拟交易所引发的思考
查看>>
高频交易的几种策略
查看>>
网格马丁格尔交易法
查看>>
TA-LIB 200多个技术指标含有及计算式
查看>>
一行代码让 Python 的运行速度提高100倍
查看>>
一行 Python 实现并行化 -- 日常多线程操作的新思路
查看>>
期货市场的运作机制
查看>>
一文精通 crontab从入门到出坑
查看>>
股票连续跌停后开板表现
查看>>
东航期货行情接口和交易接口(20190509)
查看>>
ubnutu系统完美克隆至新硬盘,系统备份迁移至新硬盘
查看>>
ubnutu系统完美克隆至新硬盘,系统备份迁移至新硬盘
查看>>
东航期货模拟交易brockerid(期货公司的客户号)
查看>>
史上最全量化资源整理
查看>>
anaconda 清华源挂了 怎么办 上交源ok
查看>>
vnpy2.0安装后报错ModuleNotFoundError: No module named 'vnpy.api.ctp.vnctpmd'
查看>>
东航期货穿透接口相关资料
查看>>
VNPY2.0火币期货交易接口配置使用
查看>>
win10和ubuntu18双系统时间同步(20190604亲测可行)
查看>>
重启小狼毫输入法,rime输入法重启
查看>>