使用高图创建大型热图会冻结浏览器
Creating large heatmap using highcharts freezes browser
我正在使用高图创建一个大型热图。它运行良好,但当有大量记录需要生成热图时。在这种情况下,它会冻结broswer,broser会显示等待或结束页面的警报。我在Stackoverflow上看到的其他答案很少,这些答案建议将计算算法更改为可以迭代调用的算法,然后使用timeout(),但我无法在我的场景中使用它,即如何使高图渲染迭代?
如何防止它冻结浏览器?
Highcharts有很多循环来渲染数据,所以我发现的唯一可能性是减少加载的数据量。加载10MB以上(通常已经达到3-4MB)的数据会导致几乎所有浏览器冻结。
我在巨大的数据集上也遇到了类似的问题(10个系列的几个月,数据点为15分钟)。我所做的是在查看整个数据集时进行服务器端数据聚合(平均4小时)。在缩放时,我通过ajax获得了实际的15分钟数据点,但仅针对带有afterSetExtremes事件的可见区域:
events: {
afterSetExtremes: 'function(event) {
if(typeof event.userMin == "undefined")
{ var a={"min": null, "max": null}; }
else
{ var a={"min": event.min, "max": event.max}; }
$.ajax({url:"/user/analyze/intval", method: "POST",
data: a, dataType: "json"}).success(function(json)
{ //update series here }'
}
我使用事件类型来确定是否使用缩放重置(再次获得初始聚合数据)
我认为类似的东西也应该能解决你的问题。问问自己,拥有这么多数据有帮助吗?即使原始数据被大量聚合,可见差异也经常接近于零(因子4-6)。
相关文章:
- 为什么继续;语句冻结浏览器
- 循环的Javascript冻结浏览器,没有语法错误
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 如何使用 dojo 在不冻结浏览器的情况下下载文件
- 如何在不冻结浏览器的情况下执行大量javascript代码
- AJAX-如何在不冻结浏览器的情况下逐个发出异步请求
- 为什么按 setTimeout 拆分的工作负载仍然会冻结浏览器
- 必应地图通过添加 8000 个图钉来冻结浏览器
- Javascript:尝试在不冻结浏览器的情况下加载高图表
- Javascript拆分冻结浏览器
- 使用高图创建大型热图会冻结浏览器
- Jquery脚本正在冻结浏览器,但正在工作
- JavaScript冻结浏览器
- jquery中的多个Ajax请求会冻结浏览器
- Javascript -更新textarea冻结浏览器选项卡
- JavaScript冻结浏览器
- 而true循环会冻结浏览器的javascript
- Javascript——等待用户交互而不冻结浏览器
- 加载多个TinyMCE实例会冻结浏览器,解决方案
- Javascript代码会冻结浏览器,并且代码只能在firefox中工作